TypeScript扩展对象时出现‘type is not assignable’错误求助
问题分析与解决
你的错误出在对象扩展的语法使用上:
- 你写的
{...data, values}会把传入的values作为一个名为values的属性添加到合并后的对象中,导致最终对象结构变成{id: number, name: string, values: Employee},但Employee接口里并没有values这个属性,所以TypeScript抛出类型不匹配的错误。
正确的写法是把values也用扩展运算符展开,这样是将values中的属性逐个合并到原对象里,而不是添加一个新属性:
interface Employee { id: number; name: string; }; let data: Employee ={ id: 1, name: 'name' } const fun = (values: Employee) => { data = {...data, ...values} }
这样合并后的对象只会包含Employee接口定义的id和name属性,完全符合类型约束,就不会再报错了。
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

