Как указать массив объектов в качестве параметра или возвращаемого значения в 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...
 }
Луч
источник

Ответы:

182

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

Синтаксис, который вы использовали для массива строк, похож на тот, который поддерживается компилятором Google Closure .

Используя это, массив объектов будет:

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

Или просто массив чего угодно - это должно работать практически со всеми инструментами документации:

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

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

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

РЕДАКТИРОВАТЬ

Если вы знаете ключи и тип переменных значений, вы также можете:

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

или

/**
 * @param {{myNumber: Number, myString: String, myArray: Array}[]} myObjects
 */
Рене Саарсу
источник
10
Файл. нотация теперь устарела, и ее поддержка должна быть прекращена позже. Текущая правильная версия - {Array<Object>}. Просто чтобы держать этот пост в актуальном состоянии.
Kenny806
2
Как с JSDoc 3 документировать массив массивов String? В старом синтаксисе я мог бы сделать что-то вродеArray.<string[]>
Snekse
9
@ Kenny806 Устарело? Справочный документ, пожалуйста?
Уилт
2
@Wilt: документация JSDoc противоречиво говорит о точке перед угловыми скобками.
Дэн Даскалеску
2
Этот ответ не объясняет, как объявлять ключи объектов в этом массиве и как объявлять массив объектов с определенными ключами в качестве возвращаемого типа. Этот ответ имеет значение.
Дэн Даскалеску