Sebelumnya saya selalu mendokumentasikan parameter objek saya sebagai berikut:
/**
* 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
}
Tapi saya tidak yakin apa pendekatan terbaik dengan parameter fungsi desctructured. Apakah saya mengabaikan objeknya, mendefinisikannya dengan cara apa pun, atau cara terbaik untuk mendokumentasikannya?
/**
* Description of the function
*
* @param {String} foo
* @param {Boolean} [bar] - Optional value
* @return {String}
*/
function doSomething ({ foo, bar } = {}) {
console.log(foo, bar);
// do something
}
Saya merasa pendekatan saya di atas tidak membuatnya jelas bahwa fungsi mengharapkan object
dan bukan dua parameter yang berbeda.
Cara lain yang dapat saya pikirkan adalah menggunakan @typedef
, tetapi itu mungkin akan menjadi kekacauan besar (terutama dalam file yang lebih besar dengan banyak metode)?
/**
* @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
dalam kode Anda atau memang memiliki nama sama sekali.