HarmonyOS NEXT鸿蒙开发 ArkTS:函数形参的默认值是多个-字面量类型 作者:马育民 • 2025-09-28 23:28 • 阅读:10005 # 提出问题 定义函数,形参的值只能是 `星期一 ~ 星期日`,如果传入是 `星期六`、`星期日` 就打印 `周末休息`,否则就打印 `工作日上班` 代码: ``` 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('星期八') // 传入其他值报错 ``` 原文出处:http://www.malaoshi.top/show_1GW1wiNsjYGc.html