Làm cách nào để chỉ định một mảng đối tượng dưới dạng tham số hoặc giá trị trả về trong JSDoc?


105

Trong JSDoc, tài liệu tốt nhất mà tôi có thể tìm thấy cho thấy cách sử dụng sau đây nếu bạn có một mảng thuộc loại cụ thể (chẳng hạn như một mảng chuỗi) như:

/**
 * @param {Array.<string>} myStrings All my awesome strings
 */
 function blah(myStrings){
     //stuff here...
 }

Làm thế nào bạn sẽ thay thế các dấu chấm hỏi dưới đây chỉ định một mảng các đối tượng?

/**
 * @param {???????} myObjects All of my equally awesome objects
 */
 function blah(myObjects){
     //stuff here...
 }

Câu trả lời:


180

Bạn nên nói rõ hơn ý của bạn về JSDoc - đây là một thuật ngữ chung bao gồm khá nhiều công cụ tài liệu kiểu JavaDoc dành cho JavaScript.

Cú pháp bạn đã sử dụng cho mảng chuỗi giống như cú pháp được hỗ trợ bởi Google Closure Compiler .

Sử dụng điều này, một mảng các Đối tượng sẽ là:

/**
 * @param {Array.<Object>} myObjects
 */

Hoặc chỉ một mảng của bất cứ thứ gì - điều này sẽ hoạt động với hầu hết các công cụ tài liệu:

/**
 * @param {Array} myArray
 */

jsdoc-toolkit , JSDoc 3JSDuck hỗ trợ cú pháp sau để biểu thị một mảng đối tượng:

/**
 * @param {Object[]} myArray
 */

BIÊN TẬP

Trong trường hợp bạn biết các khóa và kiểu biến của giá trị, bạn cũng có thể thực hiện:

/**
 * @param {Array.<{myNumber: Number, myString: String, myArray: Array}>} myObjects
 */

hoặc là

/**
 * @param {{myNumber: Number, myString: String, myArray: Array}[]} myObjects
 */

10
Các . ký hiệu hiện không được dùng nữa và hỗ trợ của nó sẽ bị loại bỏ sau đó. Phiên bản chính xác hiện tại là {Array<Object>}. Chỉ để giữ cho bài đăng này được cập nhật.
Kenny806

2
Với JSDoc 3, bạn sẽ đọc một mảng các mảng chuỗi như thế nào? Trong cú pháp cũ tôi có thể làm điều gì đó giống nhưArray.<string[]>
Snekse

9
@ Kenny806 không được dùng nữa? Một tài liệu tham khảo xin vui lòng?
Héo

2
@Wilt: tài liệu JSDoc mâu thuẫn về dấu chấm trước dấu ngoặc nhọn.
Dan Dascalescu

2
Câu trả lời này không giải thích cách khai báo khóa của các đối tượng trong mảng đó và cách khai báo một mảng đối tượng với các khóa cụ thể làm kiểu trả về. Câu trả lời này không.
Dan Dascalescu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.