Anteriormente, siempre he documentado los parámetros de mis objetos de la siguiente manera:
/**
* 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
}
Pero no estoy seguro de cuál es el mejor enfoque con el parámetro de función descestructurado. ¿Simplemente ignoro el objeto, lo defino de alguna manera o cuál es la mejor manera de documentarlo?
/**
* Description of the function
*
* @param {String} foo
* @param {Boolean} [bar] - Optional value
* @return {String}
*/
function doSomething ({ foo, bar } = {}) {
console.log(foo, bar);
// do something
}
Siento que mi enfoque anterior no hace que sea obvio que la función espera un object
parámetro diferente y no dos.
Otra forma en la que podría pensar sería usar @typedef
, pero eso podría terminar siendo un gran desastre (especialmente en un archivo más grande con muchos 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
en su código o si tiene algún nombre.