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
相关产品推荐
相关产品推荐

