我遇到以下问题:
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]
}
我不确定我该怎么做才能安全地分配一些东西到地图[钥匙]?
答案 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;
}