Тип "X" нельзя присвоить типу MyType [keyof MyType] - PullRequest
1 голос
/ 04 августа 2020

У меня проблемы со следующим:

   interface MyType {
     [key: number]: number;
   }

   function myfunc<MyType>(map: MyType, key: keyof MyType) {
     map[key] = 4; // Error: type '4' is not assignable to type MyType[keyof MyType]
   }

Я не уверен, что мне нужно сделать, чтобы было безопасно назначить что-то для map [key]?

Ответы [ 2 ]

1 голос
/ 04 августа 2020

<MyType> в myfunc вводит параметр шаблона, отличный от interface MyType. Просто избавьтесь от него, и все заработает.

function myfunc(map: MyType, key: keyof MyType) {
  map[key] = 4;
}
1 голос
/ 04 августа 2020

В вашей функции вы (по неизвестным причинам) определили общую c переменную типа MyType, которая закрывает ваше фактическое объявление MyType. Это означает, что в рамках функции MyType относится к общему типу c, для которого нельзя вывести дополнительную информацию ... отсюда и ошибка.

Необходимо изменить с

function myfunc<MyType>(map: MyType, key: keyof MyType){//...

просто

function myfunc(map: MyType, key: keyof MyType){//...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...