Document destructured function parameter in JSDoc

Vorher habe ich meine Objektparameter immer wie folgt dokumentiert:

/**
 * Description of the function
 *
 * @param {Object} config - The configuration
 * @param {String} config.foo
 * @param {Boolean} [config.bar] - Optional value
 * @return {String}
 */
function doSomething (config = {}) {
  const { foo, bar } = config;
  console.log(foo, bar);
  // do something
}

Aber ich bin mir nicht sicher, was der beste Ansatz mit dem Parameter der unstrukturierten Funktion ist. Ignoriere ich das Objekt einfach, definiere es irgendwie oder wie kann ich es am besten dokumentieren?

/**
 * Description of the function
 *
 * @param {String} foo
 * @param {Boolean} [bar] - Optional value
 * @return {String}
 */
function doSomething ({ foo, bar } = {}) {
  console.log(foo, bar);
  // do something
}

Ich glaube, mein Ansatz oben macht nicht deutlich, dass die Funktion ein @ erwartobject und nicht zwei verschiedene Parameter.

Eine andere Möglichkeit, die ich mir vorstellen könnte, wäre die Verwendung von@typedef, aber das könnte zu einem großen Durcheinander führen (besonders in einer größeren Datei mit vielen Methoden)?

/**
 * @typedef {Object} doSomethingConfiguration
 * @property {String} foo
 * @property {Boolean} [bar] - Optional value
 */

/**
 * Description of the function
 *
 * @param {doSomethingConfiguration}
 * @return {String}
 */
function doSomething ({ foo, bar } = {}) {
  console.log(foo, bar);
  // do something
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage