写点什么

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

作者:肥晨
  • 2023-04-25
    江苏
  • 本文字数:377 字

    阅读完需:约 1 分钟


导文

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];}
复制代码


发布于: 刚刚阅读数: 3
用户头像

肥晨

关注

还未添加个人签名 2021-04-15 加入

平台:InfoQ、阿里云、腾讯云、CSDN、掘金、博客园等平台创作者 领域:前端 公众号:农民工前端

评论

发布
暂无评论
Ts中string、number和any等类型 不能当做索引用,怎么处理?_三周年连更_肥晨_InfoQ写作社区