Typescript 类型';X';不可分配给类型MyType[keyof MyType]

Typescript 类型';X';不可分配给类型MyType[keyof MyType],typescript,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] } 接口MyType{ [键:数字]:数字; } 函数my

我遇到以下问题:

   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]
   }
接口MyType{
[键:数字]:数字;
}
函数myfunc(映射:MyType,键:MyType的键){
map[key]=4;//错误:类型“4”不可分配给类型MyType[keyof MyType]
}

我不确定我需要做什么才能安全地为map[key]分配某些内容?

在您的函数中,您(出于未知原因)定义了一个泛型类型变量
MyType
,它阻塞了实际的
MyType
声明。这意味着在函数的范围内,
MyType
指的是一种泛型类型,无法推断其进一步信息。。。因此出现了错误

它需要从

function myfunc<MyType>(map: MyType, key: keyof MyType){//...
myfunc
上的
引入了一个与
接口MyType
不同的模板参数。只要扔掉它,它就会起作用

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

按语法,它看起来像MyType[Index]。类似于MyType的数组。您正在尝试为MyType分配数字。@coreDeviOS我正在尝试为MyType的成员分配数字值。FYI
MyType
可以重新定义为
type MyType=Record是的,但从语法上看,它看起来像MyType的数组。@coreDeviOS接口
MyType
有一个索引签名,声明
map[key]
是一个数字,数组和dicts/map使用相同的语法
function myfunc(map: MyType, key: keyof MyType) {
  map[key] = 4;
}