Documentar parâmetro de função desestruturada no JSDoc

Anteriormente, eu sempre documentava meus parâmetros de objeto da seguinte maneira:

/**
 * 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
}

Mas não tenho certeza qual é a melhor abordagem com o parâmetro de função desestruturada. Eu simplesmente ignoro o objeto, defino-o de alguma forma ou qual é a melhor maneira de documentá-lo?

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

Eu sinto que minha abordagem acima não torna óbvio que a função espera umobject e não dois parâmetros diferentes.

Outra maneira que eu poderia pensar seria usando@typedef, mas isso pode acabar sendo uma grande bagunça (especialmente em um arquivo maior com vários métodos)?

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

questionAnswers(2)

yourAnswerToTheQuestion