Daha önce nesne parametrelerimi her zaman aşağıdaki gibi belgelemiştim:
/**
* 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
}
Ancak, yapılandırılmış fonksiyon parametresiyle en iyi yaklaşımın ne olduğundan emin değilim. Nesneyi görmezden mi geliyor, bir şekilde tanımlıyor muyum yoksa onu belgelemenin en iyi yolu nedir?
/**
* Description of the function
*
* @param {String} foo
* @param {Boolean} [bar] - Optional value
* @return {String}
*/
function doSomething ({ foo, bar } = {}) {
console.log(foo, bar);
// do something
}
Yukarıdaki yaklaşımımın, işlevin object
iki farklı parametre beklemediğini açıkça belirtmediğini hissediyorum .
Düşünebileceğim başka bir yol kullanmak @typedef
olabilir, ancak bu büyük bir karmaşa haline gelebilir (özellikle birçok yöntem içeren daha büyük bir dosyada)?
/**
* @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
kodunuzda adlandırılıp adlandırılmadığı veya herhangi bir adı olup olmadığı kimsenin umurunda değil .