如何在TypeScript子接口中添加嵌套子字段且不重复其他字段?
简洁扩展嵌套字段的两种方法
方法1:利用类型交集(&)直接扩展
你可以通过类型交集结合Foo['b']来复用原接口中b的字段,无需重复声明:
interface Foo { a: string; b: { c: string; } } interface FooChild extends Foo { // 复用Foo中b的所有字段,同时新增d字段 b: Foo['b'] & { d: string; } }
这样FooChild['b']会自动包含原有的c: string和新增的d: string,a字段因为继承自Foo也无需重复声明。
方法2:拆分嵌套接口(适合复杂场景)
如果b的字段较多,更推荐先把嵌套的b抽成独立接口,后续扩展更灵活:
// 先定义独立的B接口 interface B { c: string; // 其他10个字段... } interface Foo { a: string; b: B; } // 扩展B得到BChild interface BChild extends B { d: string; } // 再定义FooChild,直接使用BChild替换b的类型 interface FooChild extends Foo { b: BChild; }
这种方式在b结构复杂、需要多次扩展时,代码复用性更高,也更易维护。
内容的提问来源于stack exchange,提问作者Ivan Gerasimenko
相关产品推荐
相关产品推荐

