TypeScript:函数形参的默认值是多个-字面量类型

提出问题

定义函数,形参的值只能是 星期一 ~ 星期日,如果传入是 星期六、星期日 就打印 周末休息,否则就打印 工作日上班

代码:

function isWork( week : string) : void {
    if(week == '星期六' || week == '星期日'){
        console.log("周末休息")
    }else{
        console.log("工作日去上班")
    }
}
isWork('星期三')
isWork('星期六')

缺点

可以传入不合理的值,如下:

isWork('星期八')
isWork('李雷')

解决

使用 字面量类型

字面量类型

用在函数形参中,表示一组 固定的可选值,可以做校验,当传入其他值时,会报错

应用场景

函数形参的值,只能是 星期一、星期二、星期三、星期四、星期五、星期六、星期日,是固定的,只能选择之一

相当于交通灯 红、绿、黄,是固定的,只能选择之一

对比枚举类型

函数形参推荐使用字面量类型,更加方便、高效

声明

在形参的后面加上 : 值1 | 值2 | 值3,如下:

function 函数名(形参名: 值1 | 值2 | 值3 ){
}

解释: 调用函数时,只能传入 值1、值2、值3 之一

例子

function isWork(week: 'Mon' | 'Tue' | 'Wed' | 'Thur' | 'Fri' | 'Sat' | 'Sun'){
    if(week == 'Sat' || week == 'Sun'){
        console.log("周末休息")
    }else{
        console.log("工作日去上班")
    }
}

调用函数传值-成功:

isWork('Mon')
isWork('Sun')

调用函数传值-报错:

isWork('星期八') // 传入其他值报错

报错如下:


原文出处:/show_1IX5MBXZimoB.html