Раніше я завжди документував свої параметри об’єкта наступним чином:
/**
* 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
}
Але я не впевнений, що найкращий підхід до деструктурованого параметра функції. Чи просто я ігнорую об'єкт, якимось чином його визначаю або який найкращий спосіб його документувати?
/**
* Description of the function
*
* @param {String} foo
* @param {Boolean} [bar] - Optional value
* @return {String}
*/
function doSomething ({ foo, bar } = {}) {
console.log(foo, bar);
// do something
}
Я відчуваю, що мій підхід вище не дає зрозуміти, що функція очікує, object
а не два різні параметри.
Я міг би подумати про інший спосіб @typedef
, але це може закінчитися величезним хаосом (особливо у великому файлі з багатьма методами)?
/**
* @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
у вашому коді, чи він взагалі не має імені.