Skip to content

Enum

2.2.3stable

基本用法

与 TS 类似,你可以在 WARPO 中使用 enum 定义枚举值。

ts
enum Direction {
  Up,
  Down,
  Left,
  Right,
}
  • 带显式值的枚举
ts
enum HttpStatus {
  Ok = 200,
  NotFound = 404,
  ServerError = 500,
}
  • WARPO 不支持 string enums
ts
enum Color {
  Red = "RED",
  Green = "GREEN",
  Blue = "BLUE",
}
  • 使用枚举
ts
let direction: Direction = Direction.Up;
let status: HttpStatus = HttpStatus.Ok;

字符串化(Stringify)

维护 enum value 与 enum name string 之间的映射往往比较麻烦。

在 TS 中,当我们定义一个 enum 时,JS 实际上会创建两份映射:enum name -> enum value 与 enum value -> enum name。这样我们就能通过 E[e] 获取枚举值对应的名字。 WARPO 也支持这一 TS 小技巧,用于从枚举值获取其名字。

ts
enum E {
  E0,
  E1,
  E2,
}
function foo(e: E): void {
  trace(E[e]);
}

function _start(): void {
  trace(E[E.E0]); // TRACE: E0
  foo(E.E2); // TRACE: E2
}