导文
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];}