检查可选属性是否具有值

时间:2018-05-10 07:11:29

标签: angular typescript

我有以下界面:

export interface Development {
  id: number;
  type: string;
  value: string;
  formContent?: contentInterface;
}

contentInterface是具有以下内容的界面:

 export interface contentInterface {
   development: string;
   name: string;
   comment: string;
 }

现在,当我执行以下操作时:

  // tring to check if the next sectorForm[i] has formcontent values assigned
  // if values are available in formcontent add that to a form.

 if (typeof this.sectorForm[i + 1].formContent !== 'undefined') {  
  this.DevelopmentForm.setValue(this.sectorForm[i + 1].formContent);
 }

sectorForm声明如下:sectorForm: Development[]

上面的代码导致最后一个索引中的以下错误ERROR TypeError: Cannot read property 'formContent' of undefined

2 个答案:

答案 0 :(得分:1)

避免索引问题,请使用forEach

 this.sectorForm.forEach(form => {
   //rest code 
    if (form.formContent)  { 

    }
   });

就这样做

if (this.sectorForm[i + 1] && 
       this.sectorForm[i + 1].formContent) 

注意: 如果您正在查找对象上存在的属性或不使用hasOwnProperty('property1')

它将检查null或undefined等。

答案 1 :(得分:0)

数组中的项可能为null,您应首先检查该项:

if (this.sectorForm[i + 1] && typeof this.sectorForm[i + 1].formContent !== 'undefined') {  
  this.DevelopmentForm.setValue(this.sectorForm[i + 1].formContent);
 }