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

如何遍历TypeScript枚举且避免通过键取值时出现undefined?

问题出在你用了for...in遍历Object.keys(MyEnum)返回的数组——for...in迭代的是数组的索引('0'、'1'这类字符串),而不是枚举的键(VALUE1、VALUE2),所以用这些索引去访问MyEnum自然拿不到对应值。

给你两种正确的实现方式:

方式一:用for...of遍历枚举键数组

Object.keys(MyEnum)会直接返回枚举的键数组['VALUE1', 'VALUE2'],用for...of循环每个键,就能正确获取对应值:

for (const key of Object.keys(MyEnum)) {
  console.log('键:', key);
  // 加类型断言让TS类型检查通过,避免报错
  console.log('对应值:', MyEnum[key as keyof typeof MyEnum]);
}

方式二:用Object.entries直接获取键值对(更适合构建选择菜单)

如果你的目标是生成选择菜单的选项数组,Object.entries可以一步拿到键值对,直接映射成需要的结构:

const selectOptions = Object.entries(MyEnum).map(([enumKey, enumValue]) => ({
  value: enumKey, // 枚举键作为选项值
  label: enumValue // 枚举值作为选项标签
}));

console.log(selectOptions);
// 输出结果:
// [
//   { value: 'VALUE1', label: 'brown' },
//   { value: 'VALUE2', label: 'green' }
// ]

这样就能完美满足你构建选择菜单的需求了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:32:39