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

如何更简洁地为TypeScript枚举扩展多组后缀字段?

简洁实现多后缀字段类型的方案

你可以通过定义后缀联合类型结合TypeScript的键重映射功能,一次性生成所有带指定后缀的字段类型,避免冗长的交叉类型拼接:

实现代码

export enum Test {
    A = 'A',
    B = 'B',
    C = 'C'
}

// 定义需要的后缀联合类型
type Suffix = '2' | '3' | '4';

// 一次性生成所有组合字段
type TestExtended = {
  [P in keyof typeof Test as `${P}_${Suffix}`]: string;
};

原理说明

  1. 先通过Suffix联合类型集中管理所有需要的后缀,后续添加/删除后缀只需修改这个类型即可;
  2. 在映射类型的键重映射部分(as ${P}_${Suffix}``),TypeScript会自动遍历枚举键与后缀的所有组合,生成对应的字段名;
  3. 最终生成的TestExtended类型与你之前用交叉类型拼接的结果完全一致,但代码结构更简洁、扩展性更强。

进阶:动态生成数字范围后缀

如果需要的后缀是连续数字(比如从2到10),可以用递归类型生成数字范围的联合,再转成字符串后缀:

// 生成指定范围的数字联合类型
type NumberRange<Start extends number, End extends number, R extends number[] = []> = 
  R['length'] extends End ? R[number] : 
  NumberRange<Start, End, [...R, R['length'] >= Start ? R['length'] : never]>;

// 生成2-4的字符串后缀
type Suffix = `${NumberRange<2, 4>}`;

type TestExtended = {
  [P in keyof typeof Test as `${P}_${Suffix}`]: string;
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:07:14