设置接口属性typescript时出现未定义错误
2022-12-07
892
当我将 involving 设置为空数组时,我收到此错误。我尝试过的所有方法都无法解决此问题。
未捕获(在承诺中):TypeError:无法设置未定义的属性(设置“inPackage”) TypeError:无法设置未定义的属性(设置“inPackage”)
模型
export class BusinessPayload implements Business {
_id?: string;
business?: {
inPackage: string[];
status: string;
};
description: string;
}
businessPayload: BusinessPayload = null;
ngOnInit() {
this.businessPayload.business.inPackage = [];
}
2个回答
您正在将
this.businessPayload
设置为 null。当您将其设置为 null 时,它将不再是一个对象,因此将没有键。在您的 init 函数中,您尝试在为 null 的
this.businessPayload
上访问
business
。这会引发错误,因为没有可查找的内容。
解决方案可能是在您的 init 函数中写入类似以下内容:
// A check to make sure the payload is not null
if( !this.businessPayload ){
this.businessPayload = {};
}
if( business in this.businessPayload && inPackage in this.businessPayload.business ){
this.businessPayload.business.inPackage = [];
} else {
this.businessPayload.business = {
inPackage: [];
status: "default";
}
}
Josh
2022-12-08
这是因为业务属性是可选的,所以 typescript 认为它可能是未定义的
我认为最好将其更改为这样:
business: {
inPackage?: string[];
status?: string;
} = {};
Ali Sattarzadeh
2022-12-08