Tipos como string, number e any em Ts não podem ser usados como índices, como lidar com eles?

insira a descrição da imagem aqui


Introdução

Tipos como string, number e any em Ts não podem ser usados ​​como índices, como lidar com eles?
Erro: 元素隐式具有“any”类型,因为类型为“number”的表达式不能用于索引类型“[***”。在类型“[ ***”上找不到具有类型为“number"的参数的索引签名。 ts(7053)
uso de keyof

pergunta

Tipos como string, number e any em Ts não podem ser usados ​​como índices, como lidar com eles?

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

Os elementos implicitamente têm o tipo any, porque o tipo number não pode ser usado para indexar tipos {}.

Solução

Método 1

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

Método 2

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

Método 3

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

Acho que você gosta

Origin blog.csdn.net/weixin_48998573/article/details/130127109
Recomendado
Clasificación