angular - 当一个对象属性可以有两种类型时是否可以访问它(即在声明类型时它有 | 运算符)?
问题描述
我想在 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']
。
解决方案
你可以写如下
(<FolderNode>parentFolder).id || (<File>parentFolder).generatedId,
推荐阅读
- python - Pytorch-Lightning 是否具有多处理(或 Joblib)模块?
- angular - Angular Karma 测试 - ReferenceError:未定义条纹
- reactjs - 使用 switch 反应条件渲染
- css - 如何对齐CSS列中的多个项目
- javascript - 如何允许用户通过我自己的 Google Scripts Web App 编辑我的表格文件?
- c++ - 收集项目中所有 DLL 的更有效方法
- r - 将具有 Abbreviated Month-Year 格式的列转换为 Date 类型
- c - 为什么我们要在 K&R 练习 1-11 中跟踪单词的内部?
- kotlin-coroutines - 带有可选超时行为的`withTimeout`
- python - 为什么我的视图无法正确加载?(姜戈)