当对象属性具有两种类型(即声明类型时具有|运算符)时,是否可以访问该对象属性?

时间:2019-01-21 16:51:14

标签: angular typescript

我想在Angular中访问可以具有两种类型的对象的属性。

我已经声明了这样一个对象:parentFolder: FolderNode | File,但是当我尝试访问parentFolder.id时,属性id在Webstorm中变成红色。 我要提到的是File没有id属性。

我的代码看起来像

renameFolder(parentFolder: FolderNode | File, folderName: string): 
                                                    Observable<FolderNode | File> 
{
    return this.http.put<FolderNode | File>(apiVersion + 'files/' + parentFolder.generatedId || parentFolder.id, 
       {
          guid: parentFolder.id || parentFolder.generatedId,
          parent: parentFolder.parent.id || parentFolder.parent,
          name: folderName
       });
  }

我认为这是比像[]这样简单地使用parentFolder['id']更好的方法。

1 个答案:

答案 0 :(得分:1)

您可以编写如下

(<FolderNode>parentFolder).id || (<File>parentFolder).generatedId,