如何基于已有TypeScript类型A和B创建扁平化新类型?
TypeScript 实现 A+B 扁平化类型
首先修正你给出的类型定义语法错误,TypeScript 中定义对象类型需要使用 =:
type A = { prop1: string prop2: B } type B = { prop3: string prop4: boolean }
要实现你需要的扁平化类型,有两种直观的方式:
方法一:Pick 提取指定属性 + 交叉类型
直接从 A 中提取需要的 prop1,再和 B 做交叉类型合并:
type FlattenedAB = Pick<A, 'prop1'> & B;
方法二:Omit 移除冗余属性 + 交叉类型
移除 A 中不需要的 prop2 属性,再和 B 合并:
type FlattenedAB = Omit<A, 'prop2'> & B;
两种方式最终得到的 FlattenedAB 类型结构完全符合你的需求:
{ prop1: string prop3: string prop4: boolean }
可以通过以下代码验证类型有效性:
const validAB: FlattenedAB = { prop1: "foo", prop3: "bar", prop4: true };
内容的提问来源于stack exchange,提问作者WestFarmer
相关产品推荐
相关产品推荐

