31232312545435-审核

47 阅读1分钟

TypeScript小状况之对象属性赋值

2020年05月04日 02:20 ·  阅读 4366

fafksasdf sd

前言

最近开始在复杂项目中使用TypeScript,然而在使用过程中遇到了一些状况和报错,决定开一个系列记录遇到的问题和我的解决方法。

对象属性赋值

在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
复制代码
python
复制代码
Type 'any' is not assignable to type 'never'.

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

作者:用户375622986127
链接:juejin.cn/post/724372…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。