乐趣区

关于前端:Ts中stringnumber和any等类型-不能当做索引用怎么处理

导文

Ts 中 string、number 和 any 等类型 不能当做索引用,怎么解决?
报错: 元素隐式具备“any”类型,因为类型为“number”的表达式不能用于索引类型“[***”。在类型“[ ***”上找不到具备类型为“number" 的参数的索引签名。ts(7053)
keyof 的应用

问题

Ts 中 string、number 和 any 等类型 不能当做索引用,怎么解决?

const handerField = (item: number) => {caselist= data.showList[item]// 报错
}

元素隐式地领有 any 类型,因为 number 类型不能被用于索引 {} 类型。

解决办法

办法 1

const handerField = (item: number) => {caselist= (data.showList as any)[item];
}

办法 2

const handerField = (item: number) => {caselist= data.showList [item as keyof typeof data.showList]
}

办法 3

const handerField =  function <T extends object, K extends keyof T>(obj: T, key: K) {return obj[key];
}
退出移动版