You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中服务调用无返回时如何手动赋值值对象属性

报错原因

你代码的执行逻辑存在顺序错误:在判断data === null之前,你已经执行了this.houseData = data,当接口返回null时,this.houseData本身就是null值,直接给null设置dataList属性必然触发该类型错误。
另外你手动赋值的代码中还有一处隐性错误:settings数组内的id: number是TypeScript的类型声明写法,不能直接用作属性值,需要替换为实际的数值。

正确实现方式

你需要在接口返回null时,手动构造完整的AllHouseData对象实例,再赋值给this.houseData,参考代码如下:

export class HouseComponent implements OnInit {
    houseData: AllHouseData;

    callHouseService(houseList) {
        this.houseService.getHouseData(houseList).subscribe((data) => {
            // 先判断data是否为有效值
            if (data) {
                this.houseData = data;
            } else {
                // 手动构造完整的AllHouseData对象
                this.houseData = {
                    dataList: [
                        {
                            id: 0,
                            name: "",
                            settings: [{ id: 0, houseCode: "", parking: false }],
                        },
                    ],
                    numberOfHouses: 1 // 匹配dataList的长度赋值,符合类型定义要求
                };
            }
        });
    }
}

额外优化建议

如果想进一步避免空值报错,可以给houseData设置初始默认值,同时配合可选链操作符?.访问属性,降低空指针风险。

内容的提问来源于stack exchange,提问作者Robert Mason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:06:01