1-wqrewr-测试文章-审核-2-3-3

102 阅读1分钟

俄文我去额外企鹅我

发大发哈反馈

发哈反馈的生活方式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'.
}

typescript错误提示

错误提示信息:

python
复制代码
Type 'any' is not assignable to type 'never'.

因为我们的Ifoo接口的属性值包含多种类型:string、number和boolean(如果只有单一类型,例如全部都是string或者number等,则不会出现报错),所以typescript把非字面量的属性的值的类型认为是never。同时因为我们的val偷懒用了any,也没有办法很好的匹配上Ifoo定义的属性指的类型。