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