Як вказати масив об’єктів як параметр або повернене значення в JSDoc?


105

У JSDoc найкраща документація, яку я можу знайти, показує використання наступного, якщо у вас є масив конкретного типу (наприклад, масив рядків) як:

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

Як би ви замінили наведені нижче знаки запитання на вказаний масив об’єктів?

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

Відповіді:


180

Ви повинні бути більш конкретними, що ви маєте на увазі під JSDoc - це загальний термін, який охоплює майже всі інструменти документації в стилі JavaDoc для JavaScript.

Синтаксис, який ви використовували для масиву рядків, виглядає як той, який підтримує компілятор закриття Google .

Використовуючи це, масив Об'єктів буде:

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

Або просто масив чого-небудь - це має працювати майже з усіма документами:

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

jsdoc-toolkit , JSDoc 3 та JSDuck підтримують наступний синтаксис для позначення масиву об’єктів:

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

EDIT

Якщо ви знаєте ключі та тип змінних значень, ви також можете зробити:

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

або

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

10
The. нотація тепер застаріла, і її підтримка повинна бути відмовлена ​​пізніше. Поточна правильна версія {Array<Object>}. Просто, щоб оновити цю публікацію.
Kenny806

2
З JSDoc 3, як би ви документували масив String масивів? У старому синтаксисі я можу зробити щось на кшталтArray.<string[]>
Snekse

9
@ Kenny806 застаріло? Довідковий документ, будь ласка?
заповіт

2
@ Wilt: Документація JSDoc суперечить крапці перед кутовими дужками.
Дан Даскалеску

2
Ця відповідь не пояснює, як оголосити ключі об’єктів у цьому масиві та як оголосити масив об’єктів із певними ключами як тип повернення. Ця відповідь так і є.
Дан Даскалеску
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.