Ошибка «Элемент неявно имеет тип« любой », поскольку выражение типа не может использоваться для индексации типа» при обновлении значения карты - PullRequest
0 голосов
/ 27 мая 2020

Этот фрагмент кода хочет присвоить значение словарю, в котором ключ типа представляет собой строку, а значение - число.

let dict: Map<string, number> = new Map<string, number>();
dict["one"] = 1;

Элемент неявно имеет тип 'any', поскольку выражение типа '"one"' не может использоваться для индексации типа 'Map'. Свойство 'one' не существует для типа 'Map'. Vetur (7053)

Что означает эта ошибка? Как это исправить?

1 Ответ

2 голосов
/ 27 мая 2020

Хотя экземпляр Map является объектом, правильным способом использования его в качестве структуры данных является вызов .set и .get для установки и получения значений:

dict.set('one', 1);

console.log(dict.get('one'));

Карты не Предполагается, что в экземпляре должны быть произвольные пары ключ-значение , как и у вас, отсюда и ошибка TS.

Кроме того, TS может точно определить тип карты из выражения на право - нет необходимости в явной аннотации. Кроме того, если вы не планируете переназначать карту (что, как правило, довольно странно), ее следует объявить с помощью const:

const dict = new Map<string, number>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...