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

TypeScript枚举:如何用更简洁方式定义枚举值类型?

简洁定义枚举值类型的方法

你可以通过TypeScript的索引类型自动获取枚举所有值的类型,无需手动逐个列举,优化后的代码如下:

export enum PageNames {
  Buildings = "Buildings",
  Bedrooms = "Bedrooms",
  Lodgers = "Lodgers",
  History = "History",
}

// 自动推导枚举所有值的类型联合
export type PageNameT = typeof PageNames[keyof typeof PageNames];

原理说明:

  • typeof PageNames:获取枚举对象的类型,包含所有枚举键与对应值的映射关系
  • keyof typeof PageNames:提取枚举的所有键名(即"Buildings"、"Bedrooms"等字符串字面量的联合类型)
  • typeof PageNames[keyof typeof PageNames]:通过索引访问得到所有枚举值的类型联合,效果和你手动编写的PageNames.Buildings | PageNames.Bedrooms | ...完全一致

这种方式的优势在于,后续给PageNames新增枚举成员时,PageNameT会自动同步更新,不需要手动修改类型定义,既简洁又易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:25:00