typescript - 打字稿或类型
问题描述
我有一个变量,可以是 ofArray<{name:"string"}>
或string
。
我试过这个:
let nameObj:Array<{name:"string"}> | string;
但是当我这样做时nameObj[0].name
,编译器会给出错误消息:"Property 'name' does not exist on type 'string "
那我该怎么做呢?
解决方案
TypeArray<{name: string;}> | string
使 TypeScript 编译器不确定变量是Array<{name: string;}
还是string
. 它在运行时是不安全的。您必须为每种情况指定输出,或者如果您知道变量始终是string
或指定一种类型Array<{name: string;}
let nameObj: Array<{ name: string; }> | string;
const name: string = typeof nameObj === "string"
? nameObj : nameObj[0].name;
let nameObj: Array<{ name: string; }> | string;
// you are sure this variable is Array
const name = (Array<{ name: string; }> nameObj)[0].name;
但是你的代码nameObj.name
是错误的。nameObj 是数组,对象。您必须添加索引参考,例如nameObj[0].name
推荐阅读
- python - (Discord.py) 我的 8 Ball Command 在这里有一个小错误。它说选择响应的东西是启动时出错?
- javascript - 如何从 Array JavaScript 中过滤未定义的值?
- java - 从 Firebase 实时数据库中为特定用户读取数据
- r - R 中的 group_by() 和 unique() 都返回一个副本
- python - 确定最终 PDF 输出中 matplotlib 表格元素的位置
- java - 无法使用 Drive Api 在 Android Studio 中获取特定的 Drive File thumbnailLink
- firebase - 2 个相同的 BlocBuilders 在两个不同的页面上具有相同的 StreamBuilders,第二个不工作
- java - recyclerView 是否会创建许多项目回调侦听器实例?
- c# - 为 Linux 构建的 Azure 函数不包含依赖项
- java - Android 中的自定义日历 | 爪哇