Добавить новый ключ в словарь? - PullRequest
0 голосов
/ 15 октября 2019

Я хочу добавить несколько ключей в словарь через цикл. Например, когда я создаю ключ, этот ключ уже имеет свое значение.

У меня есть следующий сценарий:

var keys = ['key1', 'key2', 'key3', 'key4']
var dic = {}

for (let i = 0; i < keys.length; i++) {

    const key = keys[i]
    dic[key] = 'value' + i         
}

Обратите внимание, что я добавляю несколько ключей и уже присваиваю значениеэтот ключ, но он не работает в TypeScript, поэтому я проверил, что он отлично работает в JavaScript .

В этой строке выше есть ошибка. Обратите внимание, что я не могу добавить элемент, который не содержится в массиве:

dic[key] = 'value' + i     

Сведения об ошибке

Элемент неявно имеет тип 'any', посколькувыражение типа 'string' нельзя использовать для индексации типа '{}'.

Как получить ключи Array и назначить их в словарь со значением цикла?

1 Ответ

0 голосов
/ 15 октября 2019

Вам необходимо определить тип dic

  • Использование any
var dic: any = {}
  • Точнее
var dic: Record<string, string> = {}
  • Будь еще точнее
type Key = 'key1' | 'key2' | 'key3' | 'key4'
var keys: Key[] = ['key1', 'key2', 'key3', 'key4']
var dic: Partial<<Record<Key, string>> = {}
  • Если ключи статичны, то ты можешь сделать это еще лучше (кредит на этот поток )
const keys = ['key1', 'key2', 'key3', 'key4'] as const; // TS3.4 syntax
type Key = typeof keys[number];
var dic: Partial<Record<Key, string>> = {
  "key1": "123"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...