无法将类型“ X”分配给类型MyType [keyof MyType]

时间:2020-08-04 11:28:40

标签: typescript

我遇到以下问题:

   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]
   }

我不确定我该怎么做才能安全地分配一些东西到地图[钥匙]?

2 个答案:

答案 0 :(得分:1)

在您的函数中,您(由于未知原因)定义了一个通用类型变量MyType,该变量遮挡了您实际的MyType声明。这意味着在函数的范围内,MyType是指无法推断出更多信息的泛型类型,因此会出错。

它需要从

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

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

答案 1 :(得分:1)

<MyType>上的myfunc引入了与interface MyType不同的模板参数。只需摆脱它,它就会起作用。

function myfunc(map: MyType, key: keyof MyType) {
  map[key] = 4;
}