typeScript-枚举

枚举

把所有值都列出来,就叫枚举。

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

数字枚举

1
2
3
4
5
6
enum Direction {
up = 1,
Down,
Left,
Right
}

定义了一个数字类型,Up使用初始化为1.其余成员会从1开始自动增长。down = 2,left = 3.

不用初始化器的话,up的值是 0 ,其他依次类推。

使用枚举:通过枚举属性访问枚举成员,和枚举的名字来访问枚举的类型。

1
2
3
4
5
6
7
8
enum response {
yes = 1,
no = 0
}
function respond (recipient: string, message: Response): void {
// to do
}
respond('princess c', response.yes)

没有初始化器的成员要么在首位,要么必须在用数值常量或其他常量枚举成员初始化的数值枚举之后。 换句话说,下面的情况是不被允许的:

1
2
3
4
enum a {
a = getSomeValue(),
b // 报错。
}

字符串枚举

1
2
3
4
enum d {
up = 'up',
down = 'down'
}

异构枚举

既有数字也有字符串,不建议使用。

1
2
3
4
enum stringAndNum {
no = 0,
yes = 'yes'
}

反向映射

1
2
3
4
5
enum Enum {
A
}
let a = Enum.A
let nameOfA = Enum[a] // A 反推出key是A

const 修饰

const修饰的枚举不能修改。

1
2
3
4
const enum ee{
a = 1,
a = a * 2
}

外部枚举

1
2
3
4
5
declare enum ee {
a = 1,
b,
c = 2
}

正常枚举里,没有初始化的方法成员被当成常量成员

外部枚举(declare修饰)没有初始化方法时被当作需要经过计算的。(此处不太理解)

感谢您的阅读。 🙏