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

2023-04-23 10:25:22 浏览数 (1)

导文

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

问题

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

代码语言:javascript复制
const handerField = (item: number) => {
   caselist= data.showList[item]//报错
}

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

解决方法

方法1

代码语言:javascript复制
const handerField = (item: number) => {
   caselist= (data.showList as any)[item];
}

方法2

代码语言:javascript复制
const handerField = (item: number) => {
   caselist= data.showList [item as keyof typeof data.showList ]
}

方法3

代码语言:javascript复制
const handerField =  function <T extends object, K extends keyof T>(obj: T, key: K) {
  return obj[key];
}

0 人点赞