枚举
枚举(Enumeration)是编程语⾔中常⻅的⼀种数据类型,其主要功能是定义⼀组有限的选项,例
如,⽅向(上、下、左、右)或季节(春、夏、秋、冬)等概念都可以使⽤枚举类型定义。
枚举的定义需使用enum关键字,如下
enum Season {
SPRING,
SUMMER,
AUTUMN,
WINNER
}
枚举的使⽤记住两个原则即可
1、枚举值的访问
像访问对象属性一样访问枚举值,例如Season.SPRING
2、枚举值的类型
枚举值的类型为enum的名称,例如
Season.SPRING 和
Season.SUMMER
等值的类型都是
Season
let spring:Season = Season:SPRING
使用场景
现在需要编写一个函数 move ,其功能是根据输⼊的⽅向(上、下、左、右)进⾏移动,此时就可以先使⽤枚举定义好所有可能的输⼊选项,如下:
enum Direction {
UP,
BOTTOM,
LEFT,
RIGHT
}
move函数的实现如下:
function move(direction: Direction) {
if(direction===Direction.UP){
console.log('向上移动');
}else if(direction===Direction.BOTTOM){
console.log('向下移动');
}else if(direction===Direction.LEFT){
console.log('向左移动');
}else{
console.log('向右移动');
}
}
move(Direction.UP);
赋值
在TypeScript 中,枚举实际上是⼀个对象,⽽每个枚举值都是该对象的⼀个属性,并且每个属性都有具体的值,属性值只⽀持两种类型⸺数字或字符串。
(重点)默认情况下,每个属性的值都是数字,并且从 0
开始递增,例如上述案例中的
Direction
枚举中, Direction.UP
的值为
0
,
Direction.BOTTOM
的值为
1
,依次类推,具体如下:
console.log(Direction.UP) //0
console.log(Direction.BOTTOM) //1
console.log(Direction.LEFT) //2
console.log(Direction.RIGHT) //3
除了使⽤默认的数字作为属性的值,我们还能⼿动为每个属性赋值,例如
enum Direction {
UP = 1,
BOTTOM = 2,
LEFT = 3,
RIGHT = 4
}
console.log(Direction.UP) //1
console.log(Direction.BOTTOM) //2
console.log(Direction.LEFT) //3
console.log(Direction.RIGHT) //4
再例如:
enum Direction {
UP = 'up',
BOTTOM = 'bottom',
LEFT = 'left',
RIGHT = 'right'
}
console.log(Direction.UP) //up
console.log(Direction.BOTTOM) //bottom
console.log(Direction.LEFT) //left
console.log(Direction.RIGHT) //right
通过为枚举属性赋值,可以赋予枚举属性⼀些更有意义的信息,例如以下枚举