如何在TypeScript中检查对象是否具有属性并且属性值为true

Lea*_*day 5 typescript angular

我想检查以下对象是否具有该属性forums以及该属性值是否为true.

{forums: true, pages: true, photos: true, videos: true}
Run Code Online (Sandbox Code Playgroud)

我正在使用 TypeScript Angular 5。

我现在这样做并且工作正常。

let item = 'forums';
if ( this.itemsmodel.hasOwnProperty(item) ) {
   //Which is true. 
   if (this.itemsmodel[item]) {
          item = item;
   } else {
          item = 'pages';
   }
}
Run Code Online (Sandbox Code Playgroud)

是否有 Angular 方式或 TypeScript 方式?

Viv*_*shi 6

最短的方法,这将默认检查两个:

if(this.itemsmodel[item])
Run Code Online (Sandbox Code Playgroud)

首先它会尝试获取this.itemsmodelitem如果没有则返回undefined,如果找到则返回值,


相同但很长的路要走:

if(this.itemsmodel[item] && this.itemsmodel[item] === true)
Run Code Online (Sandbox Code Playgroud)

这里首先将检查键是否存在,第二个将检查值


因此,您可以将代码转换为这样的:

let item = 'forums';
if (this.itemsmodel[item]) {
        item = item;
} else {
        item = 'pages';
}
Run Code Online (Sandbox Code Playgroud)

  • `if('name_of_field' in this.itemsmodel)`,@Pontios (2认同)