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

如何扩展TypeScript枚举类型,新增带_2后缀的字段类型?

解决方案:扩展枚举类型以包含带后缀的字段

嘿,这个需求用TypeScript的映射类型结合模板字面量类型就能轻松搞定!咱们一步步来实现:

首先先回顾你的原枚举和已完成的基础类型:

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

// 你已实现的包含原枚举字段的类型
type TestOriginal = { [p in keyof typeof Test]: string };

方法1:合并原类型与后缀字段类型

我们可以先单独生成带_2后缀的字段类型,再和原类型合并:

// 生成所有带_2后缀的字段类型
type TestWithSuffix = { [p in keyof typeof Test as `${p}_2`]: string };

// 合并两个类型,得到最终的扩展类型
type TestExtended = TestOriginal & TestWithSuffix;

方法2:更简洁的单映射实现

其实可以一步到位,直接在映射类型里同时声明原字段和后缀字段:

type TestExtended = {
  [p in keyof typeof Test | `${keyof typeof Test}_2`]: string;
};

原理说明

  • keyof typeof Test会提取枚举的键类型,也就是'A' | 'B' | 'C'
  • 模板字面量类型${keyof typeof Test}_2会自动给每个枚举键拼接_2,生成'A_2' | 'B_2' | 'C_2'
  • 把这两个联合类型作为映射的键,就能一次性包含所有需要的字段了

使用示例

现在你可以定义完全符合要求的对象:

const validObj: TestExtended = {
  A: 'valueA',
  B: 'valueB',
  C: 'valueC',
  A_2: 'valueA2',
  B_2: 'valueB2',
  C_2: 'valueC2'
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:30:42