俄文我去额外企鹅我
发大发哈反馈
发哈反馈的生活方式d
发的黑咖啡啥的
前言
最近开始在复杂项目中使用TypeScript,然而在使用过程中遇到了一些状况和报错,决定开一个系列记录遇到的问题和我的解决方法。
对象属性赋值
在TypeScript里面,当需要给对象属性赋值的时候,经常就会遇到下图所示的错误提示。
typescript
复制代码
interface Ifoo{
name: string;
age: number;
weight: number;
isEngineer: boolean;
}
function setProp (foo: Ifoo, key: keyof Ifoo, val: any) {
foo[key] = val; // Type 'any' is not assignable to type 'never'.
}
错误提示信息:
python
复制代码
Type 'any' is not assignable to type 'never'.
因为我们的Ifoo接口的属性值包含多种类型:string、number和boolean(如果只有单一类型,例如全部都是string或者number等,则不会出现报错),所以typescript把非字面量的属性的值的类型认为是never。同时因为我们的val偷懒用了any,也没有办法很好的匹配上Ifoo定义的属性指的类型。