Como especificar uma matriz de objetos como um parâmetro ou valor de retorno no JSDoc?

105

No JSDoc, a melhor documentação que posso encontrar mostra como usar o seguinte se você tiver uma matriz de um tipo específico (como uma matriz de strings) como:

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

Como você substituiria os pontos de interrogação abaixo para especificar uma matriz de objetos?

/**
 * @param {???????} myObjects All of my equally awesome objects
 */
 function blah(myObjects){
     //stuff here...
 }
Raio
fonte
5
possível duplicata do valor de retorno e parâmetro
Gajus

Respostas:

180

Você deve ser mais específico sobre o que quer dizer com JSDoc - este é um termo genérico que cobre praticamente todas as ferramentas de documentação do estilo JavaDoc para JavaScript.

A sintaxe que você usou para a matriz de strings se parece com aquela suportada pelo Google Closure Compiler .

Usando isso, uma matriz de objetos seria:

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

Ou apenas uma variedade de qualquer coisa - isso deve funcionar com praticamente todas as ferramentas de documentação:

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

jsdoc-toolkit , JSDoc 3 e JSDuck suportam a seguinte sintaxe para denotar uma matriz de objetos:

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

EDITAR

Caso você conheça as chaves e o tipo de variável dos valores, você também pode fazer:

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

ou

/**
 * @param {{myNumber: Number, myString: String, myArray: Array}[]} myObjects
 */
Rene Saarsoo
fonte
10
O . notação agora está obsoleta e seu suporte deve ser abandonado posteriormente. A versão correta atual é {Array<Object>}. Apenas para manter este post atualizado.
Kenny806
2
Com o JSDoc 3, como você documentaria uma matriz de matrizes String? Na sintaxe antiga, posso fazer algo comoArray.<string[]>
Snekse,
9
@ Kenny806 Obsoleto? Um documento de referência, por favor?
Wilt
2
@Wilt: a documentação do JSDoc é contraditória sobre o ponto antes dos colchetes angulares.
Dan Dascalescu
2
Esta resposta não explica como declarar as chaves dos objetos nesse array e como declarar um array de objetos com chaves específicas como um tipo de retorno. Essa resposta sim.
Dan Dascalescu