类型或类型

时间:2018-08-17 17:47:43

标签: typescript

我有一个变量,可以是Array<{name:"string"}>string

我尝试过:

let nameObj:Array<{name:"string"}> | string;

但是当我执行nameObj[0].name时,编译器会给出错误消息:"Property 'name' does not exist on type 'string "

那我该怎么做?

1 个答案:

答案 0 :(得分:1)

类型Array<{name: string;}> | string使TypeScript编译器不确定变量是Array<{name: string;}还是string。在运行时不安全。您必须为每种情况指定输出,或者,如果您知道变量始终为stringArray<{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