在这个例子中,Typescript 编译器仍然抱怨,尽管在我看来它不应该
type Car = {
isOn: boolean
name: string
}
function doSomething(key: keyof Car, value: string | boolean) {
const car: Car = {
isOn: false,
name: "myCar",
}
if (typeof car[key] === typeof value) {
car[key] = value
}
}
错误信息:
“TS2322:类型 'string | boolean' 不能分配给类型'never'。类型'string' 不能分配给类型'never'。”
我错过了什么吗?
答案 0 :(得分:2)
无法正确推断结果的类型。为此,您需要对其进行模板化:
function doSomething<K extends keyof Car>(key: K, value: Car[K]) {
// ...
}