Выражение типа any не может использоваться для индексации типа
Обновлено: 21.11.2024
Элемент неявно имеет тип 'any', потому что выражение типа 'string' нельзя использовать для индексации типа '» . Нет подписи индекса с параметром типа 'строка' для типа '» .
Я пытался повсюду просматривать документы TypeScript, но как, черт возьми, я должен interface это сделать, чтобы он мог принять color[e] ?
test 10 Авг 2019 в 02:352 ответа
Лучший ответПроблема не в том, что color неправильный тип, а в том, что TypeScript выводит тип ['red', 'green', 'blue'] как string[] . Часто такой тип вывода желателен, поскольку (для всех, кто знает компилятор) вы можете захотеть вставить 'purple' в него. Но в этом случае вы бы хотели, чтобы компилятор знал, что единственными членами являются три строковых литерала 'red' , 'green' и 'blue' . То есть вам нужен тип, по крайней мере, такой же специфичный, как Array<'red'|'green'|'blue'> .
Предполагая, что вы используете TS3.4 или новее, самый простой способ получить этот тип вывода типа из компилятора - это использовать const утверждение:
Хорошо, надеюсь, это поможет. Удачи!
jcalz 10 Авг 2019 в 01:23Вы можете объявить colors как any , чтобы дать TypeScript указание отойти от этого вопроса (он же явно любой ):
Но если это возможно, предпочтительнее строгая типизация:
Подробнее об индексировании в TypeScript: Подписи индекса
РЕДАКТИРОВАТЬ: В этом ответе на похожий вопрос автор предлагает использовать > - если это соответствует вашему варианту использования.
Читайте также: