我遇到了一个奇怪的 Typescript 分配错误,我试图更多地了解它为什么不起作用。作为参考,我正在使用 TS 3.9.2
。
编码:
function test<U extends object>(a: U, k: keyof U) {
const x: Partial<U> = { [k]: a[k] };
// ...
}
错误:
Type '{ [x: string]: U[keyof U]; }' is not assignable to type 'Partial<U>'.
只有当我使用泛型时才会出现问题,例如,如果U
我不使用具体接口,那么它会按预期工作。
我假设类型系统在U
分配期间无法正确推断和使用它们的键,这是为什么呢?我检查了它k
内部{ [k]: a[k] }
正确返回的类型,keyof U
所以我不完全理解为什么类型系统不能使用该信息来检查分配是否合法并概括k
为string
.
谢谢你。