typescript - 编译器无法识别类型保护
问题描述
在这个例子中,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'。”
我错过了什么吗?
解决方案
无法正确推断结果的类型。为此,您需要对其进行模板化:
function doSomething<K extends keyof Car>(key: K, value: Car[K]) {
// ...
}
推荐阅读
- c - 使用动态分布存储用户输入和输出的学生信息
- css - 无法让对象在屏幕右侧开始
- c++ - TMap 中的 UObject 指针
- r - 从一大组数据帧中产生平均值、标准偏差和平均值的标准误差
- windows - 注销后如何保持 Docker 堆栈在 Windows 上运行?
- flutter - 为什么像 Column() 这样的 Flutter 小部件不需要`.children`
- javascript - Javascript/CSS:条件高亮瓷砖麻将
- java - 在 java 的 hadoop 库中禁用 Kerberos
- caching - “webcache.googleusercontent”会自行自动清除已删除的内容吗?
- java - Java如何对齐打印输出?