You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中如何批量合并多个接口为联合类型

编程式合并多个TypeScript接口为联合类型

当然可以!手动把一堆接口挨个写到联合类型里确实够麻烦的,尤其是接口数量多的时候,TypeScript提供了几种优雅的方式帮你自动生成这个联合类型,完全不用手动罗列:

方法1:利用命名空间批量管理接口

把所有需要合并的接口放到一个命名空间里导出,然后通过类型操作自动提取联合类型:

// 把所有接口集中放到命名空间里
namespace MyInterfaces {
  export interface Foo { foo: string }
  export interface Bar { bar: number }
  export interface Baz { baz: boolean }
  // 新增接口直接在这里加export interface即可
}

// 自动生成所有接口的联合类型
type AllCombined = typeof MyInterfaces[keyof typeof MyInterfaces];

原理其实很好理解:

  • keyof typeof MyInterfaces会获取命名空间里所有导出接口的名称组成的联合类型(也就是 "Foo" | "Bar" | "Baz")
  • 再通过typeof MyInterfaces[xxx]取出每个名称对应的接口类型,最终自动组合成完整的联合类型。

方法2:用映射类型收集接口(适合分散定义的接口)

如果你的接口已经是分散定义的,不想搬到命名空间里,可以创建一个映射类型来“收集”这些接口,再提取联合:

// 已有的分散接口
interface Foo { foo: string }
interface Bar { bar: number }
interface Baz { baz: boolean }

// 创建一个映射类型,把每个接口和一个键关联
interface InterfaceCollector {
  fooType: Foo;
  barType: Bar;
  bazType: Baz;
  // 新增接口时,只需要在这里加一行键值对即可
}

// 自动生成联合类型
type AllCombined = InterfaceCollector[keyof InterfaceCollector];

这种方式的好处是不需要改动原有接口的定义,只需要在InterfaceCollector里新增条目,联合类型就会自动更新。

这两种方法都能帮你摆脱手动维护联合类型的麻烦,新增接口只需要在一个地方操作,非常适合接口数量多的场景~

内容的提问来源于stack exchange,提问作者jpthesolver2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:07:28