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

如何通过变量动态访问枚举类型?

枚举动态访问的可行性及解决方案

你写的var mytype = EventType.event这种方式完全不可行。原因是枚举的点语法(.)只能访问字面量命名的成员,这里的event会被当作枚举的成员名来解析,但你的EventType里根本没有名为event的成员,自然无法拿到想要的fire枚举值。

要实现动态访问枚举成员,需要用方括号语法,结合类型断言(TypeScript环境下)来处理,示例如下:

enum EventType {
  earthquake,
  flood,
  fire
}

var event = "fire";

// 先校验输入的字符串是否是枚举的有效成员,避免报错
if (event in EventType) {
  // 通过方括号+类型断言动态访问
  var mytype = EventType[event as keyof typeof EventType];
  console.log(mytype); // 输出2(默认枚举值从0自增)
} else {
  console.log("输入的事件类型无效");
}

如果是在纯JavaScript环境中(用对象模拟枚举),可以直接用EventType[event]访问,但要注意提前校验字符串的合法性,避免访问到undefined。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:10:01