Cho đến nay, có 4 cách khác nhau để ghi lại các đối tượng dưới dạng tham số / loại. Mỗi cái có công dụng riêng. Tuy nhiên, chỉ có 3 trong số chúng có thể được sử dụng để ghi lại các giá trị trả về.
Đối với các đối tượng có tập thuộc tính đã biết (Biến A)
/**
* @param {{a: number, b: string, c}} myObj description
*/
Cú pháp này lý tưởng cho các đối tượng chỉ được sử dụng làm tham số cho hàm này và không yêu cầu mô tả thêm về từng thuộc tính. Nó có thể được sử dụng @returns
là tốt .
Đối với các đối tượng có tập thuộc tính đã biết (Biến thể B)
Rất hữu ích là các tham số với cú pháp thuộc tính :
/**
* @param {Object} myObj description
* @param {number} myObj.a description
* @param {string} myObj.b description
* @param {} myObj.c description
*/
Cú pháp này lý tưởng cho các đối tượng chỉ được sử dụng làm tham số cho hàm này và yêu cầu mô tả thêm về từng thuộc tính. Điều này không thể được sử dụng cho @returns
.
Đối với các đối tượng sẽ được sử dụng tại nhiều hơn một điểm trong nguồn
Trong trường hợp này, một @typedef rất tiện dụng. Bạn có thể xác định loại tại một điểm trong nguồn của mình và sử dụng nó làm loại cho @param
hoặc @returns
hoặc các thẻ JSDoc khác có thể sử dụng loại.
/**
* @typedef {Object} Person
* @property {string} name how the person is called
* @property {number} age how many years the person lived
*/
Sau đó, bạn có thể sử dụng điều này trong một @param
thẻ:
/**
* @param {Person} p - Description of p
*/
Hoặc trong một @returns
:
/**
* @returns {Person} Description
*/
Đối với các đối tượng có giá trị là cùng loại
/**
* @param {Object.<string, number>} dict
*/
Loại (chuỗi) đầu tiên ghi lại loại khóa mà trong JavaScript luôn là một chuỗi hoặc ít nhất sẽ luôn bị ép buộc thành một chuỗi. Loại thứ hai (số) là loại giá trị; đây có thể là bất kỳ loại nào Cú pháp này có thể được sử dụng @returns
là tốt.
Tài nguyên
Thông tin hữu ích về các loại tài liệu có thể được tìm thấy ở đây:
https://jsdoc.app/tags-type.html
Tái bút
để ghi lại một giá trị tùy chọn bạn có thể sử dụng []
:
/**
* @param {number} [opt_number] this number is optional
*/
hoặc là:
/**
* @param {number|undefined} opt_number this number is optional
*/