TypeScript 中的枚举

阅读时长 4 分钟读完

枚举(Enum)是一种值类型,它是一组具有命名特性的常量集合。在 TypeScript 中,枚举类型可以让我们更方便地定义一些具有界限性的数据。

枚举的定义

在 TypeScript 中,枚举类型定义可以使用 enum 关键字,如下所示:

上面的代码定义了一个 Direction 枚举,其中包含了四个成员,分别为 UpDownLeftRight。它们的值分别为 0123

枚举的值

枚举成员的值可以是数字或字符串,但是必须唯一。如果枚举成员没有指定值,则它的值默认为前一个成员的值加 1。例如:

在这个枚举中,Yes 的值为 1No 的值为 2Maybe 的值为 3

如果枚举成员的值是字符串,那么其他成员必须是已经定义的字符串枚举成员的子集。例如:

枚举的使用

使用枚举类型时,我们可以通过访问枚举成员的方式来获取枚举成员的值。例如:

-- -------------------- ---- -------
---- --------- -
  ---
  -----
  -----
  -----
-

-------------------------- -- -- -
-------------------------- -- -- ----

上面的代码中,我们通过 Direction.Up 获取了 Up 枚举成员的值,得到了 0。而通过 Direction[0] 获取了 0 值对应的枚举成员名称,得到了 "Up"

枚举的高级用法

枚举在 TypeScript 中还有一些高级用法,例如位枚举(Bitwise Enum)和反向映射(Reverse Mapping)等。

位枚举

位枚举根据二进制位的值定义枚举成员的值。位枚举可以通过按位运算符进行组合,以便表示多个选项。例如:

上面的代码中,Permission 枚举定义了四个成员,分别为 NoneReadWriteExecute,并且通过位移运算符定义了二进制值。而在变量 p 中,我们将 ReadWrite 两个枚举成员通过按位或运算符进行组合,得到了二进制值 0b011,表示同时具有读和写权限。

反向映射

在 TypeScript 中,枚举类型支持反向映射。反向映射是指,对枚举成员的值进行反向的查找,从而得到对应的枚举成员名称。例如:

上面的代码中,我们通过 Direction[Direction.Up] 可以得到 Up 枚举成员对应的名称,输出了 "Up"

总结

本文介绍了 TypeScript 中的枚举类型,并且详细地讲解了枚举的定义、值、使用以及高级用法。枚举类型可以让我们更清晰地表达一些有限的数据集合,从而能够提升代码的可读性和维护性。

参考链接

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a7e49548841e98944823c8

纠错
反馈