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

如何提取接口中所有类型并生成其联合类型?

提取Interface所有属性类型组成联合类型的方法

当然可以实现,在TypeScript里用索引类型查询就能轻松做到。

针对你给出的示例:

原Interface定义:

interface T {
  a: TypeA;
  b: TypeB;
  c: TypeC;
}

只需要一行代码就能生成目标联合类型:

type U = T[keyof T];

这里的原理是:

  • keyof T会返回该Interface所有属性名组成的联合类型,也就是 "a" | "b" | "c"
  • 用T[keyof T]索引访问每个属性对应的类型,TypeScript会自动将这些类型合并成TypeA | TypeB | TypeC的联合类型

如果你的Interface包含可选属性,生成的联合类型会自动包含undefined(比如属性a?: TypeA的话,U会包含TypeA | undefined),如果需要排除undefined,可以结合Exclude工具类型:

type U = Exclude<T[keyof T], undefined>;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:22:58