主题
enum 枚举
enum 类似于 “字面量类型 + 枚举类型”,表示定义一组命名常量。
ts
enum DirectionEnum {
Up,
Down,
Left,
Right,
}
let direction: DirectionEnum = 'aa' // 报错:Type '"aa"' is not assignable to type 'DirectionEnum'
let direction2: DirectionEnum = DirectionEnum.Up数字枚举
枚举值若为数字,则后续枚举值会依次递增,第一个枚举值默认为 0。
ts
enum DirectionEnum {
Up, // 0
Down, // 1
Left, // 2
Right, // 3
}
enum DirectionEnum {
Up = 10, // 10
Down, // 11
Left, // 12
Right, // 13
}
enum DirectionEnum {
Up = 10, // 0
Down, // 1
Left, // 2
Right, // 3
}
enum DirectionEnum {
Up = 10, // 10
Down, // 11
Left = 20, // 20
Right, // 21
}字符串枚举
若定义为字符串,其他枚举值必须赋予初始值。
ts
enum DirectionEnum {
Up = 'UP',
Down = 'DOWN',
Left = 'LEFT',
Righ = 'RIGHT',
}枚举原理
ts
enum DirectionEnum {
Up = 10, // 10
Down, // 11
Left = 20, // 20
Right, // 21
}
// => js
var DirectionEnum
;(function (DirectionEnum) {
DirectionEnum[(DirectionEnum['Up'] = 10)] = 'Up'
DirectionEnum[(DirectionEnum['Down'] = 11)] = 'Down'
DirectionEnum[(DirectionEnum['Left'] = 20)] = 'Left'
DirectionEnum[(DirectionEnum['Right'] = 21)] = 'Right'
})(DirectionEnum || (DirectionEnum = {}))ts
enum DirectionEnum {
Up = 'UP',
Down = 'DOWN',
Left = 'LEFT',
Righ = 'RIGHT',
}
// => js
var DirectionEnum
;(function (DirectionEnum) {
DirectionEnum['Up'] = 'UP'
DirectionEnum['Down'] = 'DOWN'
DirectionEnum['Left'] = 'LEFT'
DirectionEnum['Righ'] = 'RIGHT'
})(DirectionEnum || (DirectionEnum = {}))枚举值若不为数字,
常量枚举
编译后非常复杂,通过常量枚举可以提升性能f
ts
const enum DirectionEnum {
Up = 10, // 10
Down, // 11
Left = 20, // 20
Right, // 21
}