● 上一章我们讲了 TS 的接口
● 这一章, 我们就来聊一聊 TS 的枚举和约束
枚举
认识枚举
● 在很多计算机语言中都有枚举的概念, 但是 JS 中是没有枚举这个概念的, 为了弥补这个缺憾 在 TS 加入了枚举类型
● 什么是枚举呢 ?
枚举( mei ju ) : 枚举的意思就是一一列举, 把所有情况都列举出来, 那么取值的时候, 只有这几个可以使用, 其他的都不行
计算机语言里面的枚举( enumerations ) : 把所有的常量放在一个集合内, 让若干个常量变成一组有关联的内容
// 针对一个业务逻辑, 我需要频繁用到四个方向的字符串
const UP = 'up'
const RIGHT = 'right'
const DOWN = 'down'
const LEFT = 'left'
● 对于以上四个变量来说
● 我不管做任何逻辑, 我没办法限制你只能使用这四个变量中的一个
// 封装一个功能函数
function util(dir) {}
● 不管用什么方法, 你都没办法限制这个 dir 参数接收到的必须是上面列出的四个方向
● 这个时候, 我们就可以用到枚举了
● 首先, 在 TS 中, 利用 enum 关键字创建一个枚举集合, 把我们需要的四个常量放进去
enum Direction {
UP = 'up',
RIGHT = 'right',
DOWN = 'down',
LEFT = 'left'
}
● 制作了一个 DIrection 枚举集合, 那么就可以用这个集合来对某些数据进行限制了
function util(dir: Direction) {}
● 这就约定了, dir 这个参数的值只能是 Direction 这个枚举集合里面的常量, 其他都不行
● 只要你写的不是 Direction 这个枚举内的内容都不行
数字枚举
● 数字枚举 : 枚举类型中的每一个常量都是数字
● 在 TS 中, 枚举内的每一个常量, 当你不设置值的时候, 默认就是 number 类型
enum Pages {
ONE, // 0
TWO, // 1
THREE // 2
}
● 你在枚举内的常量, 第一个默认值是 0, 后面的依次 +1 递增
此时
Pages.ONE => 0
Pages.TWO => 1
Pages.THREE => 2
● 我们也可以自己指定值
enum Pages {
ONE = 10, // 10
TWO = 20, // 20
THREE = 30 // 30
}
● 这个时候枚举集合内的常量就是我们指定好的值
● 我们也可以指定部分值
enum Pages {
ONE = 10, // 10