Документ деструктурированной функции параметра в JSDoc

Ранее я всегда документировал параметры своего объекта следующим образом:

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

Но я не уверен, что лучший подход с параметром функции desctructedd. Я просто игнорирую объект, определяю его как-то или как лучше всего документировать его?

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

Я чувствую, что мой подход выше не делает очевидным, что функция ожидаетobject а не два разных параметра.

Другой способ, которым я мог придумать, это использовать@typedef, но это может закончиться большим беспорядком (особенно в большом файле со многими методами)?

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

Ответы на вопрос(2)

Ваш ответ на вопрос