Ключ Dynami c с параметрами в машинописном тексте - PullRequest
0 голосов
/ 03 августа 2020

У меня есть такой объект

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

Теперь я хочу получить к нему доступ через диапазон al oop, например,

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

, но он не работает, поэтому любое решение, которое может мне помочь в этом контексте? Спасибо!

1 Ответ

0 голосов
/ 03 августа 2020

Есть 2 возможных способа обойти это:

  1. Широкий тип для SUMS

Typescript выводит тип SUMS, если вы не предоставляете аннотацию как:

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

Вместо этого вы можете расширить этот тип до {[key: string]: {}}, и это позволит вам получить доступ к элементам здесь, используя SUMs[string]

Вместо этого вы можете ввести assert свой ключ следующим образом:
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) более правильный подход

...