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
}