typescript 类型字符串上不存在属性长度|号码|{}【】

rdrgkggo  于 2022-11-26  发布在  TypeScript
关注(0)|答案(2)|浏览(142)

下面是变量的类型

type imageTags: string | number | {
    tag_type: string;
    tag_name: string;
    tag_id: number;
    photo_id: number;
    confidence: number;
}[]

这是我尝试访问其属性的方式。

if (imageTags.length > 0) {
      return imageTags[0].tag_name === image_type;
    }

变量可以是字符串、数字或数组那么为什么会出现错误类型'string'上不存在属性'length'|号码|{标记类型(_T):字符串; tag_name:字符串; tag_id:编号;照片ID:数量;置信度:number; }[]“。属性”length“在类型”number“上不存在。ts(2339)

bxgwgixi

bxgwgixi1#

您可以检查imageTags的类型是否为Array,然后再检查长度:

if (Array.isArray(imageTags) && imageTags.length) {
  return imageTags[0].tag_name === image_type;
}
q8l4jmvw

q8l4jmvw2#

imageTags被声明为stringnumber或对象数组。也许你希望它是stringnumber和/或对象数组,所以它总是一个数组?那么你应该使用括号:

type imageTags: (string | number | {
    tag_type: string;
    tag_name: string;
    tag_id: number;
    photo_id: number;
    confidence: number;
})[]

相关问题