如何在角度2中存在属性时如何读取属性?

时间:2017-08-22 06:54:08

标签: angular typescript

我有一个对象,我有时会收到一个值,有时候没有。

当我得到这个值时,我可以正确地将它分配给对象。

我知道使用myObj.hasOwnProperty('myProperty')我可以测试该属性是否存在于if语句中。但是当我在下面的行上读它时(只有在设置属性时才会发生),我得到以下错误:

  

/my/project/my.file.ts中的错误(xx,yy):属性'属性'在类型'类型'。

上不存在

我怎样才能仅在存在的情况下读取该值,从而不会出现此错误?

if (myObj.hasOwnProperty('myProperty')){
    doStuff(myObj.myProperty);
}

1 个答案:

答案 0 :(得分:1)

只需使用myObj['myProperty']

即可
if (myObj['myProperty'] !== undefined) {
    // here myProperty is defined (but maybe null or other falsy value)
}

如评论中所述,如果您可以重新定义myObj类型,然后将其键入为any,则使得Typescript允许您尝试所需的属性,然后您可以简单地写:

if (myObj.myProperty !== undefined) {
    // here myProperty is defined (but maybe null or other falsy value)
}