开发者问题收集

设置接口属性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