【问题标题】:JS Doc , is there any way to specify "Choice" param?JSDoc,有没有办法指定“选择”参数?
【发布时间】:2021-12-27 16:43:29
【问题描述】:

我对 JS 和 JS Doc 还很陌生,我对可选参数有疑问。

想象一下这个功能

/**
 * @param {string} [param1]
 * @param {string} [param2]
 */
const foo= (){...}

正如JSDoc所说,可选参数是这样的

/**
 * @param {string} [somebody] - Somebody's name.
 */

在我的示例中,有什么方法可以定义 2 个可选参数,但至少需要一个?(如果设置了 param1,则不设置 param2,如果设置了 param2,则不设置 param1)。

感谢您的帮助。

【问题讨论】:

    标签: javascript jsdoc


    【解决方案1】:

    参数名称周围的方括号表示它是可选的。 要使其成为必需,请删除方括号。

    /**
     * @param {string} param1 - required
     * @param {string} [param2] - optional
     */
    const foo= (){...}
    

    您也可以只使用 Typescript,以获得更强大的类型系统。

    const foo = (param1: string, param2?: string);
    

    Is there any way, with my example, to define 2 optional parameters but at least one is required ?(If param1 is set, param2 is not and if param2 is set, param1 is not).

    为了解决这个问题,可以定义多个函数重载。

    function foo(email:string);
    function foo(username:string){
      if(username) return "Used username overlaod";
      if(email) return "Used email overload";
    }
    

    对于 JSDoc,它更难。看起来像这样:

    /**
     *
     * @constructor
     * @param {string} username
     *
     * @constructor
     * @param {string} email
     */
    function foo(value) {
      // ...
    }
    

    我建议使用 TS 而不是 JSDoc。

    【讨论】:

    • 我的问题是关于JSDoc,而不是代码本身,对你来说没有办法,谢谢你的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多