如何使用 JSDocs 描述具有默认值的可选 object 参数

How to describe an optional object parameter with default values using JSDocs

如果标题正确表达了我想做的事情,我不会。但是我有以下功能:

/**
 * @param {any} param1
 * How to describe the second parameter??
 * @returns {Object}
 */
function doSomething (param1, { property1 = null, property2 = null }){
  // do stuff
  return something
}

如评论中所问,使用 JSDocs,我将如何描述第二个参数?

可选参数可以放在[]方括号

/**
 * @param {any} param1
 * @param {Object} [param2]
 * 
 * @returns {Object}
 */
function doSomething (param1, { property1 = null, property2 = null }) {}

但是,我认为 param2 不能像那样是可选的和解构的。那不行。

默认值、可选参数等可以参考js doc官网。参考:https://jsdoc.app/tags-param.html#optional-parameters-and-default-values

寻找 Parameters with properties.

使用方括号[]表示可选参数。 像这样:

/**
 * @param {any} param1
 * @param {Object} somethingWithProps - Some description
 * @param {string} [somethingWithProps.property1] - First property
 * @param {string} [somethingWithProps.property2] - Second property
 * @returns {Object}
 */
function doSomething (param1, { property1 = null, property2 = null }){
    // do stuff
    return something
}

来自文档: Optional parameters and Documenting a destructuring parameter

如果您正在为 Closure 编译器编写 JSDoc,您应该使用 = 来表示可选参数:

* @param {string=} property1

https://github.com/google/closure-compiler/wiki/Types-in-the-Closure-Type-System#optional

但对于对象属性,您可以使用具有 |undefined:

的记录类型
/** @param {{required:string, optional:(string|undefined)}} props */

https://github.com/google/closure-compiler/wiki/A-word-about-the-type-Object#records

Here's a version in the Closure Compiler API thingy

注意:我确实认为这可能是编译器中一个相对较新的功能,因此您的情况可能会有所不同。