Как вы получаете доступ к значению объекта динамически в Typescript? - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть следующий код, который выдает ошибку доступа

const data = {
    name: 'Tox',
    age: 12,
    gender: "male"
};


Object.keys(data).map((key, i) => {
  console.log(`key: ${key}`, '|', `value: ${data[key]}`); // How do you get the value?
});

Редактировать:

Сообщение об ошибке: Element implicitly has an 'any' type because type '{ name: string; age: number; gender: string; }' has no index signature.

1 Ответ

1 голос
/ 04 апреля 2020

Значение доступно через data[key], что вы делаете правильно. Я думаю, что ошибка, с которой вы сталкиваетесь, это не ошибка JavaScript, а ошибка компилятора TypeScript. По сути, поскольку data не индексируется с помощью переменной string, вам необходимо сообщить компилятору, что key на самом деле является ключом data объекта, а не просто string:

Object.keys(data).map(key => {
  console.log(`key: ${key}`, '|', `value: ${data[key as keyof typeof data]}`); // How do you get the value?
});

См. Пример проверки концепции .

Если вы посмотрите на аргумент key, TypeScript предполагает, что это просто string вместо свойства data объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...