首页 > 解决方案 > 打字稿或类型

问题描述

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

我试过这个:

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

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

那我该怎么做呢?

标签: typescript

解决方案


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


推荐阅读