JavaScript中如何为函数参数设置指定类型约束
给JS函数参数添加类型约束的实现方式
以下是三种主流的实现方案,你可以根据自己的项目场景选择:
- 如果你项目可以接入TypeScript,直接用静态类型注解即可,编译阶段就会完成类型检查,不需要额外运行时代码:
// arr: number[] 表示参数为元素是数字的数组,num: number 表示参数为数字类型 function search(arr: number[], num: number) { // 函数逻辑 }
注:如果需要严格限制num为整数,可以把类型定义为int,或者搭配TS的类型守卫做进一步限制。
- 如果你只能用原生JS运行,不需要编译流程,可以在函数开头加运行时类型校验逻辑,不符合类型要求就提前抛出错误:
function search(arr, num) { // 校验第一个参数是否为数组 if (!Array.isArray(arr)) { throw new TypeError('第一个参数必须为数组类型') } // 校验第二个参数是否为整数 if (typeof num !== 'number' || !Number.isInteger(num)) { throw new TypeError('第二个参数必须为整数类型') } // 后续查找逻辑 }
注:这种校验会在函数执行时触发,不需要额外工具支持,适配所有JS运行环境。
- 如果你不想改动代码运行逻辑,又想在开发阶段获得IDE的类型提示和提前校验,可以加JSDoc类型注解:
/** * 遍历数组查找指定数字 * @param {number[]} arr 待查找的数字数组 * @param {number} num 要查找的目标整数 */ function search(arr, num) { }
注:VS Code等主流IDE默认支持JSDoc的类型检查,开启JS类型校验开关后,开发阶段就会自动标注类型不匹配的传参,不需要修改代码执行逻辑。
内容的提问来源于stack exchange,提问作者Dhruv Anand
相关产品推荐
相关产品推荐

