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

如何在JavaScript中根据枚举自动声明关联类型?

实现方案

你可以借助TypeScript的映射类型和模板字面量类型实现需求,修改Animals枚举时MyType会自动同步更新,具体代码如下:

// 原枚举定义
enum Animals {
  CAT = 'cat',
  DOG = 'dog',
}

// 定义需要的属性后缀联合类型
type AnimalPropsSuffix = '_price' | '_from' | '_color';

// 基于枚举动态生成目标类型
type MyType = {
  [K in `${Animals}${AnimalPropsSuffix}`]: string;
};

代码说明

  • ${Animals}${AnimalPropsSuffix} 是模板字面量类型,会把Animals的每个成员值和每个后缀拼接,生成所有需要的属性名(比如cat_price、dog_from等)
  • 映射类型[K in ...]会遍历所有拼接出来的属性名,统一指定属性类型为string

当你修改Animals枚举时(比如新增PIG = 'pig'),MyType会自动新增pig_price、pig_from、pig_color这三个属性,完全同步枚举的变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:10:11