TS支持数字枚举和基于字符串的枚举

·  阅读 2827

前言

其实,之前在讲TS的类型的时候,我们提到过枚举。

如果不太明白概念,你可以把枚举简单理解为列举

之前例子用到了enum

enum Direction {
  NORTH,
  SOUTH,
  EAST,
  WEST,
}
let dir: Direction = Direction.NORTH;
复制代码

枚举的好处是,我们可以定义一些带名字的常量,而且可以清晰地表达意图或创建一组有区别的用例

TS支持数字的和基于字符串的枚举,首先来看数字枚举

数字枚举

举例:

enum Direction {
    Up = 1,
    Down,
    Left,
    Right
}
复制代码

这就是一个数字枚举,我们为Up初始化为1,剩下的其他会自动从1开始增长。

当然也可以不用初始化,如下:

enum Direction {
    Up,
    Down,
    Left,
    Right,
}
复制代码

这样默认就是从0开始自增

那如何使用枚举呢?

答案是,通过枚举的属性来访问枚举成员,和枚举的名字来访问枚举类型。比如我们在说类型时举的例子:

enum Direction {
  NORTH,
  SOUTH,
  EAST,
  WEST,
}
let dir: Direction = Direction.NORTH;
复制代码

字符串枚举

在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。例如:

enum Direction {
    Up = "UP",
    Down = "DOWN",
    Left = "LEFT",
    Right = "RIGHT",
}
复制代码

字符串枚举可以很好的序列化,原因是字符串枚举没有自增长的行为。如果你正在调试并且必须要读一个数字枚举的运行时的值,这个值通常是很难读的,它并不能表达有用的信息,而字符串枚举允许你提供一个运行时有意义的并且可读的值,独立于枚举成员的名字

你可能会想字符串和数字能否混合,需要注意的是,枚举确实可以混合字符串和数字成员,但是一般不建议这样做!

END

以上就是本文的所有内容,如有问题,欢迎指正~

收藏成功!
已添加到「」, 点击更改