如何正确访问TypeScript枚举值?是否仅可作为类型使用?
TypeScript字符串枚举访问问题解决方法
你遇到的报错是TypeScript类型检查导致的,枚举不仅是类型,也是运行时存在的对象,完全可以直接访问其值,以下是几种正确的访问方式:
1. 直接通过枚举成员访问(推荐)
这是最直接且类型安全的方式,不需要字符串索引:
enum Days{ monday= "monday", sunday= "sunday", } console.log(Days.monday); // 输出 "monday"
2. 字符串索引时指定类型断言
如果必须使用字符串动态访问(比如从外部获取字符串值的场景),可以将字符串断言为枚举的键类型:
console.log(Days["monday" as keyof typeof Days]);
3. 提前定义键类型变量
先声明一个符合枚举键类型的变量,再用它来索引:
type DayKey = keyof typeof Days; const targetDay: DayKey = "monday"; console.log(Days[targetDay]);
报错原因说明
TypeScript默认把"monday"识别为通用的string类型,而枚举Days的键是特定的字面量类型("monday"或"sunday"),通用字符串无法直接索引枚举类型,所以需要通过类型断言或明确变量类型来告诉TS这个字符串是枚举的有效键。
内容的提问来源于stack exchange,提问作者vuvu
相关产品推荐
相关产品推荐

