提出问题
定义函数,形参的值只能是 星期一 ~ 星期日,如果传入是 星期六、星期日 就打印 周末休息,否则就打印 工作日上班
代码:
function isWork( week : string) : void {
if(week == '星期六' || week == '星期日'){
console.log("周末休息")
}else{
console.log("工作日去上班")
}
}
isWork('星期三')
isWork('星期六')
缺点
可以传入不合理的值,如下:
isWork('星期八')
isWork('李雷')
解决
使用枚举
枚举介绍
枚举是一组 固定的可选值
应用场景
作为函数形参的类型,如:
限制传参只能是
星期一、星期二、星期三、星期四、星期五、星期六、星期日,是固定的,只能选择之一限制传参只能是 交通灯的
红、绿、黄,是固定的,只能选择之一
好处
可以做 校验,当传入其他值时,会报错
对比函数形参的字面量类型
函数形参推荐使用字面量类型,更加方便、高效
声明
使用 enum 关键字修饰,enum 的全称为 enumeration
enum 枚举名 { 成员1,成员2,成员3}
解释:
enum:定义枚举- 枚举名:规范要求首字母大写
- 成员:规范要求首字母大写
例子
enum Week {Mon,Tue,Wed,Thur,Fri,Sat,Sun}
访问成员
通过下面方式使用:
枚举名.成员
例子
console.log(Week.Mon)
案例
定义枚举
Week,成员是:Mon,Tue,Wed,Thur,Fri,Sat,Sun定义函数,形参是
Week类型,如果传入是星期六、星期日就打印周末休息,否则就打印工作日上班
代码:
enum Week {Mon,Tue,Wed,Thur,Fri,Sat,Sun}
function isWork( week : Week) : void {
console.log(week) // 打印枚举值
if(week == Week.Sat || week == Week.Sun){
console.log("周末休息")
}else{
console.log("工作日去上班")
}
}
isWork(Week.Mon)
isWork(Week.Sun)
isWork('星期八') // 报错
成员的默认值
枚举成员的默认值,从 0 开始 自增,依次是 0,1,2...
例子
enum Week {Mon,Tue,Wed,Thur,Fri,Sat,Sun}
function enumValue(week : Week) :void {
console.log(week) // 打印枚举成员值
}
enumValue(Week.Mon)
enumValue(Week.Sun)
执行结果:
0
6
指定成员的值-数字类型
enum Week {Mon = 10,Tue = 100,Wed,Thur,Fri,Sat,Sun}
解释:
- 成员
Mon的值是10 - 成员
Tue的值是100 - 成员
Wed的值是Tue 的 值 + 1,即:101 - 成员
Thur的值是Wed 的 值 + 1,即:102
注意: 值是数字类型时,才会 自增 1
例子:
function enumValue(week : Week) :void {
console.log(week) // 打印枚举成员值
}
enumValue(Week.Mon)
enumValue(Week.Tue)
enumValue(Week.Wed) // Tue 的值 + 1
enumValue(Week.Thur) // Wed 的值 + 1
执行结果:
10
100
101
102
指定成员的值-字符串类型
指定字符串类型后,就需要为每个成员指定值
enum Week {
Mon = '星期一',
Tue = '星期二',
Wed = '星期三',
Thur = '星期四',
Fri = '星期五',
Sat = '星期六',
Sun = '星期日'
}
function enumValue(week : Week) :void {
console.log(week) // 打印枚举成员值
}
enumValue(Week.Mon)
enumValue(Week.Tue)
enumValue(Week.Wed)
enumValue(Week.Thur)
错误
enum Week {Mon = '星期一',Tue,Wed,Thur,Fri,Sat,Sun}
由于指定 Mon 的值是字符串,其他成员没有指定值,执行会报错,如下:
