¿Cómo especificar una matriz de objetos como parámetro o valor de retorno en JSDoc?

105

En JSDoc, la mejor documentación que puedo encontrar muestra cómo usar lo siguiente si tiene una matriz de un tipo específico (como una matriz de cadenas) como:

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

¿Cómo reemplazaría los siguientes signos de interrogación para especificar una matriz de objetos?

/**
 * @param {???????} myObjects All of my equally awesome objects
 */
 function blah(myObjects){
     //stuff here...
 }
Rayo
fuente
5
posible duplicado del valor de retorno
Gajus

Respuestas:

180

Debería ser más específico lo que quiere decir con JSDoc: este es un término genérico que cubre prácticamente todas las herramientas de documentación de estilo JavaDoc para JavaScript.

La sintaxis que usó para la matriz de cadenas se parece a la que admite Google Closure Compiler .

Usando esto, una matriz de objetos sería:

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

O simplemente una variedad de cualquier cosa, esto debería funcionar con casi todas las herramientas de documentación:

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

jsdoc-toolkit , JSDoc 3 y JSDuck admiten la siguiente sintaxis para denotar una matriz de objetos:

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

EDITAR

En caso de que conozca las claves y el tipo de variable de los valores también puede hacer:

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

o

/**
 * @param {{myNumber: Number, myString: String, myArray: Array}[]} myObjects
 */
Rene Saarsoo
fuente
10
Los . La notación ahora está en desuso y su soporte debería eliminarse más adelante. La versión correcta actual es {Array<Object>}. Solo para mantener esta publicación actualizada.
Kenny806
2
Con JSDoc 3, ¿cómo documentaría una matriz de matrices de cadenas? En la sintaxis anterior, podría hacer algo comoArray.<string[]>
Snekse
9
@ Kenny806 ¿Obsoleto? ¿Un documento de referencia por favor?
March
2
@Wilt: la documentación de JSDoc es contradictoria sobre el punto antes de los corchetes angulares.
Dan Dascalescu
2
Esta respuesta no explica cómo declarar las claves de los objetos en esa matriz y cómo declarar una matriz de objetos con claves específicas como tipo de retorno. Esta respuesta lo hace.
Dan Dascalescu