乐闻世界logo
搜索文章和话题

如何按顺序访问 Typescript 枚举

4 个月前提问
3 个月前修改
浏览次数31

1个答案

1

在 TypeScript 中,枚举(Enum)是一种特殊的类型,用于定义一组命名的常数。当需要确保一个变量只能取有限几个值时,枚举是非常有用的。TypeScript 支持数字和字符串的枚举。如果需要按顺序访问枚举的值,可以使用以下方法:

使用数字枚举

数字枚举在 TypeScript 中会自动赋值从 0 开始递增的数字,除非手动指定值。因此,访问数字枚举是非常直接的。

例子:

typescript
enum Color { Red, // 默认为 0 Green, // 默认为 1 Blue // 默认为 2 } // 按顺序访问枚举 for (let i = 0; i < Object.keys(Color).length / 2; i++) { console.log(Color[i]); } // 输出: // Red // Green // Blue

这里使用了 Object.keys(Color).length / 2 是因为 TypeScript 枚举在编译后会创建一个双向映射,即既有从名称到值的映射,也有从值到名称的映射。因此,数组的长度实际上是枚举成员的两倍。

使用字符串枚举

字符串枚举则需要每个成员都被显式地初始化。对于字符串枚举,我们可以通过转换为数组并使用索引访问。

例子:

typescript
enum Color { Red = 'RED', Green = 'GREEN', Blue = 'BLUE' } // 获取所有枚举值 const colors = Object.values(Color); // 按顺序访问枚举 for (const color of colors) { console.log(color); } // 输出: // RED // GREEN // BLUE

在这个例子中,我们使用了 Object.values() 函数来获取枚举的所有值,并通过一个简单的 for-of 循环来遍历它们。

总结

按顺序访问 TypeScript 中的枚举取决于枚举的类型(数字或字符串)。数字枚举因为有自动的索引,可以更直接地通过索引访问;而字符串枚举则可以通过转换成数组的方式来按顺序访问。这两种方法都提供了一种高效且清晰的方式来遍历枚举的值。

2024年6月29日 12:07 回复

你的答案