【发布时间】:2021-10-04 00:33:06
【问题描述】:
我有这个代码部分,很简单:
interface A {
z: string;
y: number;
}
let newA = <T, S extends keyof T>(key: S, value: T[S]): Partial<T> => {
return {[key]: value};
}
我看到一条错误消息:
Type '{ [x: string]: T[S]; }' is not assignable to type 'Partial<T>'
我可以假设问题与{} 有关,它总是将key 映射为string
但即使使用显式类型表示应该是 string 我也没有结果
只有一个可行的解决方案是删除Partial<T>,但这不是一个好的解决方案
希望能得到一些专家级的typescript的回答,他可以描述这个问题的机制,并得到这种情况的解决方案
注意!该问题仅与一般情况有关。没有它,一切都会好起来的。
【问题讨论】:
-
这个函数怎么调用?
-
没有电话。错误在类型级别。后来我想它会是这样的:`newA('z', '10')
标签: typescript typescript-typings typescript-generics