首页 > 解决方案 > JS Doc,有没有办法指定“Choice”参数?

问题描述

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

想象一下这个功能

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

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

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

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

感谢帮助。

标签: javascriptjsdoc

解决方案


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

/**
 * @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) {
  // ...
}

我建议在 JSDoc 上使用 TS。


推荐阅读