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

TypeScript中能否基于其他自定义字符串类型构建动态字符串类型?

TypeScript 基于原有字符串联合类型自动生成衍生类型实现方案

完全可以实现自动生成,无需手动枚举所有组合。TypeScript 4.1 及以上版本提供的模板字面量类型,配合联合类型自带的分布式特性,就能零额外成本实现这个需求。


核心实现代码

// 原始字符串联合类型
type Names = "field1" | "field2";

// 统一定义需要拼接的固定后缀
type Suffix = "created" | "updated" | "deleted";

// 自动生成目标衍生联合类型
type FieldsNames = `${Names}_${Suffix}`;

实现效果

上述写法生成的FieldsNames类型,和手动枚举的类型完全等价:

// TS自动推导的结果和手动书写完全一致
type FieldsNames =
  | "field1_created"
  | "field1_updated"
  | "field1_deleted"
  | "field2_created"
  | "field2_updated"
  | "field2_deleted";

维护优势

  • 后续给Names新增任意字符串成员,FieldsNames会自动同步生成对应带三个后缀的类型,不需要修改衍生类型的定义
  • 需要调整后缀规则时,仅修改Suffix的成员即可,所有拼接逻辑自动同步
  • 原理是联合类型在模板字面量中会自动做笛卡尔积展开,不需要额外编写类型遍历逻辑,类型计算是TS编译阶段原生完成的,没有额外开销

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:49:12