我有一个具有以下定义的类:
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?
答案 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)
}
}