Trước đây, tôi luôn ghi lại các thông số đối tượng của mình như sau:
/**
* 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
}
Nhưng tôi không chắc cách tiếp cận tốt nhất với tham số hàm được mô tả là gì. Tôi chỉ bỏ qua đối tượng, xác định nó bằng cách nào đó hay cách tốt nhất để ghi lại nó là gì?
/**
* Description of the function
*
* @param {String} foo
* @param {Boolean} [bar] - Optional value
* @return {String}
*/
function doSomething ({ foo, bar } = {}) {
console.log(foo, bar);
// do something
}
Tôi cảm thấy như cách tiếp cận của tôi ở trên không làm cho nó rõ ràng rằng hàm mong đợi một object
tham số chứ không phải hai tham số khác nhau.
Một cách khác mà tôi có thể nghĩ ra sẽ sử dụng @typedef
, nhưng điều đó có thể trở thành một mớ hỗn độn lớn (đặc biệt là trong một tệp lớn hơn với nhiều phương thức)?
/**
* @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
trong mã của bạn hay không có tên nào cả.