以前我总是记录我的对象参数如下:
/**
* 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
}