首页 > 解决方案 > Typescript中带有参数的动态键

问题描述

我有一个像这样的对象

const SUMs = {
sum_1: {},
sum_2:{},
sum_3:{},
sum_4:{}
}

现在我想通过这样的循环范围访问它

for (let i of [1,2,3,4]){
 const key = `sum_${i}`
 const sum = SUMs[key]
}

但它不起作用,所以在这种情况下任何可以帮助我的解决方案?谢谢!

标签: typescriptobjectdynamickey

解决方案


有两种可能的解决方法:

  1. 广泛的类型SUMS

SUMS如果您不提供注释,Typescript 会推断出的类型:

{
    sum_1: {};
    sum_2: {};
    sum_3: {};
    sum_4: {};
}

您可以改为将此类型扩展为{[key: string]: {}},这将允许您使用此处访问项目SUMs[string]

  1. 您可以改为键入断言您的密钥,如下所示:
for (let i of [1, 2, 3, 4]) {
  const key = `sum_${i}`;
  const sum = SUMs[key as keyof typeof SUMs]; // you're asserting that `key` can only be keys of the `SUMs` object

  console.log(sum);
}

可以说(2)是一种更正确的方法


推荐阅读