枚举
枚举(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
通过为枚举属性赋值,可以赋予枚举属性⼀些更有意义的信息,例如以下枚举