javascript - 我如何像 lodash 一样使用 JSDoc 对参数进行分组?

标签 javascript parameters jsdoc

我想知道 lodash 如何根据用户输入的参数类型或数量对参数建议进行分组,如下所示:

enter image description here

上图中可以看到lodasheach函数有8组的建议.以下是我的示例代码:

示例函数:

function filter(allowSize, max) {
  //do Something
}


如果filter函数只有1个参数,使用下面的jsdoc:

/**
 * @param {object} allowSize
 * @param {number} allowSize.min
 * @param {number} allowSize.max
 */

I want to remove max parameter from suggestion, but I don't know how to do it



如果filter函数有2个参数,使用下面的jsdoc:

/**
 * @param {number} allowSize
 * @param {number} max
 */

I want to rename allowSize parameter to min in suggestion, but I don't know how to do it


如何使用 jsdoc 执行上述操作?

最佳答案

可以使用函数重载方法,但是javascript不支持这种方法,那lodash怎么做呢?

答案是 lodash 使用 typescript 编写代码。Typescript 允许您使用重载方法编写函数。Typescript 将生成一个扩展名为 .d.ts 其中包含与编写的代码相关的信息。

示例:

function filter(allowSize: object): any;
function filter(min: number, max: number): any;
function filter(arg1: object | number, arg2?: number): any {
    if (typeof arg1 === "object") {
        // do something when the function only have 1 parameter
    } else if (typeof arg1 === "number" && typeof arg2 === "number") {
        // do something when the function has 2 parameters
    } else {
        // default
    }
}

之后,用命令tsc -d typescript_file.ts编译TS文件

-d 参数可用于告诉编译器创建声明文件。

关于javascript - 我如何像 lodash 一样使用 JSDoc 对参数进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54743047/

相关文章:

javascript - 正则表达式: Match whole numbers in string

c# - 如何迭代 System.Windows.SystemParameters?

java 引用 Class<> 作为其子类型

sql-server - 当 BCD 映射规则处于事件状态时,在 INSERT 查询中转换参数值会导致算术溢出

javascript - 为什么这个对象字面量没有呈现给 JSDoc?

javascript - echo 或 print_r 数组到 div 的占位符中

javascript - 为什么我的文本显示为 "sd"?使用 Jquery 和 Post 将变量传递给 PHP

javascript - Pagespeed 评级低 - 我错过了什么?

JSDoc,类型变量

javascript - JsDoc、ES6 和@param {Constructor}