手动检查Array.isArray后修复TypeScript错误

时间:2020-04-09 09:51:44

标签: typescript

我有一个具有以下定义的类:

export class WorkspaceFilter {
  [key: string]: boolean | string | [string]
}

然后我尝试在以下功能中使用它:

const fn = (filter: WorkspaceFilter, key: string) => {
  if (Array.isArray(filter[key]) {
    console.log(filter[key].length)
  }
}

错误为Property 'length' does not exist on type 'false'. 显然,这是因为布尔值是可接受的类型之一。但是我正在手动检查类型!确切的js类型检查后如何关闭Typescript?

1 个答案:

答案 0 :(得分:1)

如果您检查它是否为数组,则可以告诉打字稿它正在处理数组:

export class WorkspaceFilter {
  [key: string]: boolean | string | [string]
}

const fn = (filter: WorkspaceFilter, key: string) => {
  if (Array.isArray(filter[key])) {
    console.log((filter[key] as string[]).length)
  }
}