javascriptecmascript-6jsdoc

How to describe destructured object arguments in JSDoc


If I have a JavaScript function taking an object as a parameter, I can describe expected properties of the object with JSDoc like this:

/**
 * @param bar
 * @param bar.baz {number}
 * @param bar.qux {number}
 */
function foo(bar) {
    return bar.baz + bar.qux;
}

How do I describe these properties if I define my function with ECMAScript 6 destructuring, not giving the real parameter object a name at all?

const foo = ({ baz, qux }) => baz + qux;

Solution

  • It turns out JSDoc does support destructing via making up a placeholder name. It is lacking in official documentation.

    http://usejsdoc.org/tags-param.html#parameters-with-properties

    /**
     * @param {Object} param - this is object param
     * @param {number} param.baz - this is property param
     * @param {number} param.qux - this is property param
     */
    const foo = ({ baz, qux }) => baz + qux;