元素隐式具有 'any' 类型,因为类型 'any' 的表达式不能用于索引类型 '{ 1: number; 2:数量; 3:数量; }'

时间:2021-05-20 11:14:01

标签: javascript typescript typescript-typings

以下代码抛出:

Element implicitly has an 'any' type because the expression of type 'any' can't be used to index type '{ 1: number; 2: number; 3: number; }'.
const obj = {
  1: 1,
  2: 2,
  3: 3,
}

fetch('http://example.com/foo.json')
  .then(response => response.json())
  //                        ? throws
  .then(data => console.log(obj[data]))

而不是列出所有可能的键:

const obj = {
  1: 1,
  2: 2,
  3: 3,
}

fetch('http://example.com/foo.json')
  .then(response => response.json())
  //                                 ? list all possible keys
  .then(data => console.log(obj[data as 1 | 2 | 3]))

有没有更好的方法来修复这个错误?

1 个答案:

答案 0 :(得分:1)

单线:

const obj = {
  1: 1,
  2: 2,
  3: 3,
}

fetch('http://example.com/foo.json')
  .then(response => response.json())
  //                                 ? one-liner
  .then(data => console.log(obj[data as keyof typeof obj]))