我有一个变量,可以是Array<{name:"string"}>
或string
。
我尝试过:
let nameObj:Array<{name:"string"}> | string;
但是当我执行nameObj[0].name
时,编译器会给出错误消息:"Property 'name' does not exist on type 'string "
那我该怎么做?
答案 0 :(得分:1)
类型Array<{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