首页 > 解决方案 > 当一个对象属性可以有两种类型时是否可以访问它(即在声明类型时它有 | 运算符)?

问题描述

我想在 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
       });
  }

我觉得它必须是比简单地使用更好的方法[]like parentFolder['id']

标签: angulartypescript

解决方案


你可以写如下

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

推荐阅读