In precedenza ho sempre documentato i miei parametri degli oggetti come segue:Documento parametro di funzione destrutturato in 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
}
Ma io sono sicuro che cosa l'approccio migliore è con il parametro di funzione desctructured. Devo semplicemente ignorare l'oggetto, definirlo in qualche modo o qual è il modo migliore per 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
}
mi sento come il mio approccio di cui sopra non lo rende evidente che la funzione si aspetta un parametro diverso object
e non due.
Un altro modo che potrei pensare sarebbe utilizzare @typedef
, ma questo potrebbe finire per essere un disastro enorme (specialmente in un file più grande con molti metodi)?
/**
* @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
}
penso che il primo approccio è ancora valida. A nessuno importa se l'oggetto è chiamato 'config' nel tuo codice o non ha alcun nome. – Bergi
In WebStorm ho scoperto che se descrivo solo i parametri (dopo la destrutturazione) e ignori la destrutturazione, funziona per lo più tranne che per casi meno comuni. Quindi, nel tuo esempio, descrivi due parametri 'pippo' e' bar'. Non è una soluzione finale, ma qualsiasi approccio che utilizza un oggetto ha prodotto errori di ispezione - e le ispezioni e i completamenti automatici dell'IDE sono quelli a cui tengo di più. –