TypeScript中如何更简洁地在两个对象之间复制子集数据?
实现方案
1. 最简写法(推荐)
直接使用对象扩展运算符即可,一行完成赋值,无需逐字段声明:
const b: B = { ...a, dateOfBirth: new Date() }
该写法会自动复制a的所有属性到新对象,再追加dateOfBirth字段,TypeScript会自动校验a中是否包含B要求的firstName、lastName必填字段,只要匹配就不会报类型错误。
2. 严格剔除多余字段写法
如果你的A类型实例实际带有middleName字段,需要严格遵守B类型的结构不携带多余属性,可以用下面的写法:
const { middleName, ...restA } = a const b: B = { ...restA, dateOfBirth: new Date() }
这种写法会主动丢弃middleName字段,生成的b完全符合B类型的结构定义。
内容的提问来源于stack exchange,提问作者Alexander Zeitler
相关产品推荐
相关产品推荐

