我想对我遇到的这个错误做一些解释:
interface Test {
a: number;
b: string;
c: string;
}
function f(obj1: Test, obj2: Test, field: keyof Test) {
obj1[field] = obj2[field]; // Error: Type 'string | number' is not assignable to type 'never'.
}
以下是我发现的一些规避该错误的方法:
- 如果 Test 仅包含数字或仅包含字符串
- 如果我使用
obj1[field as string] = obj2[field]
- 如果我将方法更改为
function f<K extends keyof Test>(obj1: Test, obj2: Test, field: K)
但我不明白为什么这段代码会失败,是打字稿中的“错误”还是我遗漏了什么?