Anteriormente, sempre documentei 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 de qual é a melhor abordagem com o parâmetro de função desestruturada. Devo apenas ignorar o objeto, defini-lo 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
}
Acho que minha abordagem acima não deixa óbvio que a função espera um object
e não dois parâmetros diferentes.
Outra maneira que eu poderia imaginar seria usando @typedef
, mas isso pode acabar sendo uma grande bagunça (especialmente em um arquivo maior com muitos 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
}
config
em seu código ou se tem algum nome.