TypeScript中如何遍历整数值枚举并正确获取键值对?
TypeScript数字枚举遍历:获取正向key-value对
针对你定义的数字枚举:
export enum Actions { All = 1, Success = 2, Failed = 3 }
TypeScript的数字枚举会自动生成反向映射(比如Actions[1] = "All"),所以直接遍历会得到6个条目(3个正向+3个反向)。要只获取原始的key("All"、"Success"、"Failed")和对应的value(1、2、3),可以用以下几种实用方法:
方法1:遍历中过滤类型
通过判断枚举值的类型,筛选出正向映射的条目:
for (const key in Actions) { // 反向映射的value是字符串,正向的是数字 if (typeof Actions[key as keyof typeof Actions] === 'number') { const value = Actions[key as keyof typeof Actions] as number; console.log(`key: ${key}, value: ${value}`); } }
方法2:先提取有效key再遍历
先过滤出非数字的key(反向映射的key是数字),再遍历获取对应value:
// 过滤掉数字类型的key const validKeys = Object.keys(Actions).filter(key => isNaN(Number(key))); validKeys.forEach(key => { const value = Actions[key as keyof typeof Actions]; console.log(`key: ${key}, value: ${value}`); });
方法3:用Object.entries过滤
通过Object.entries获取所有键值对,再筛选出value为数字的条目:
Object.entries(Actions).forEach(([key, value]) => { if (typeof value === 'number') { console.log(`key: ${key}, value: ${value}`); } });
三种方法最终都会输出:
key: All, value: 1 key: Success, value: 2 key: Failed, value: 3
内容的提问来源于stack exchange,提问作者Hey Itsme
相关产品推荐
相关产品推荐

