javascript - JavaScript 中的函数参数类型
问题描述
我有一个函数可以遍历一个数组并查找一个数字。
function search(arr, num) { }
此函数将Array和Integer作为输入。但是我希望参数是它们各自的类型,有什么方法可以设置参数的类型。
解决方案
JavaScript 是一种松散类型的语言,没有办法以声明的方式说它arr
应该是一个数组并且num
应该是文档以外的数字(例如JSDoc)。看起来像这样:
/**
* Searches (insert fuller description here).
*
* @param {number[]} arr The array to search through.
* @param {number} num The number to (use? search for?)
* @returns (you can use the same {syntax} to say what the return type is)
*/
function search(arr, num) {
if (!Array.isArray(arr)) {
throw new Error(`'arr' argument must be an array`);
}
if (typeof num !== "number"/* Or use `Number.isInteger(num)` for an integer check [it includes the typecheck]*/) {
throw new Error(`'num' argument must be a number`);
}
// ...do the work...
}
您可以在运行时检查。看起来像这样:
function search(arr, num) {
if (!Array.isArray(arr)) {
throw new Error(`'arr' argument must be an array`);
}
if (typeof num !== "number"/* && perhaps a check for int if that part is really important*/) {
throw new Error(`'num' argument must be a number`);
}
// ...do the work...
}
有一种建立在 JavaScript 之上的语言称为TypeScript,它添加了一个静态类型系统。然后将其编译为 JavaScript 以供浏览器、Node.js 等使用。如果静态类型对您正在做的事情很重要,您可能需要考虑使用它。
在 TypeScript 中,你会这样做(如果你希望数组是一个数字数组):
function search(arr: number[], num: number) {
// ...
}
这不需要整数,所有 JavaScript 数字都是 IEEE-754 浮点数或BigInt
s。
推荐阅读
- google-chrome - 如何在 Chrome 中自动播放视频?
- javascript - 突出显示 div 中的元素并将其设置在其他元素之上
- clearcase - 如何将 clearcase 视图从 v7.3 迁移到 v9.0.x?
- javascript - 如何用另一个替换div元素中的同一行 - javascript
- java - 如何通过 asyncTask 从不同的 URL 下载不同文件夹中的文件?
- python - Python:如何用字符串和数字重命名列
- smali - dexlib2 - 分支覆盖检测
- matlab - Imwarp 图像 Simulink Matlab 功能块可变大小
- python-3.x - Hyperopt:重新运行时更改最佳参数
- r - 是否可以通过管道传输数据框变量