枚举
枚举
使用枚举我们可以定义一些带名字的常量。 使用枚举可以清晰地表达意图或创建一组有区别的用例。
数字枚举
enum Dire {
Up = 1,
Down,
Left,
Right
}
如上,我们定义了一个数字枚举, Up
使用初始化为 1
。 其余的数据会从 1
开始自动增长,每次递增为1。 换句话说, Dire.Up
的值为 1
, Down
为 2
, Left
为 3
, Right
为 4
。
enum Dire {
Up,
Down,
Left,
Right,
}
我们也可以完全不使用初始化器,这时, Up
的值为 0
, Down
的值为 1
等等。 当我们不在乎成员的值的时候,这种自增长的行为是很有用处的,但是要注意每个枚举成员的值都是不同的。
使用枚举很简单:通过枚举的属性来访问枚举成员,和枚举的名字来访问枚举类型:
// enum 枚举 Num 枚举的名字
enum Num{
one=1,
two=2
}
function a1(num:Num){
console.log(`数字是:${num}`);
}
a1(Num.one)
字符串枚举
字符串枚举的概念很简单,但是有细微的运行时的差别。 在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。
// enum 枚举 Sex 枚举的名字
enum Sex{
boy='男',
girl='女'
}
function a2(sex:Sex){
console.log(`张三的性别是:${sex}`);
}
a2(Sex.boy)
由于字符串枚举没有自增长的行为,字符串枚举可以很好的序列化。 换句话说,如果你正在调试并且必须要读一个数字枚举的运行时的值,这个值通常是很难读的 - 它并不能表达有用的信息,字符串枚举允许你提供一个运行时有意义的并且可读的值,独立于枚举成员的名字。