如何在TypeScript中替换类型?新增属性并修改已有属性类型
TypeScript 修改并扩展已有类型的正确方式
基于你定义的原类型:
type Person = { name: string hobbies: Array<string> }
要实现新增age属性且将hobbies类型替换为Array<number>,你需要正确组合Omit工具类型与交叉类型,核心是把修改后的属性作为对象类型的一部分进行交叉,而不是直接交叉数组类型。
正确实现代码
// 移除原Person中的hobbies属性,再交叉新增age和修改后的hobbies属性 type NewPerson = Omit<Person, "hobbies"> & { age: number; hobbies: Array<number>; }; // 验证使用 const people: Array<NewPerson> = [{name: "rich", age: 28, hobbies: [1,2,3]}];
为什么之前的写法不对?
你之前直接将Array<number>和Omit结果交叉,这会让类型变成{name: string}与数组类型的混合,不符合对象类型的结构要求。正确的做法是把需要修改的hobbies和新增的age放在一个对象类型里,再和Omit后的结果交叉,这样才能得到结构正确的新对象类型。
内容的提问来源于stack exchange,提问作者Red Baron
相关产品推荐
相关产品推荐

