Come specificare un array di oggetti come parametro o valore restituito in JSDoc?


105

In JSDoc, la migliore documentazione che posso trovare mostra di utilizzare quanto segue se si dispone di un array di un tipo specifico (come un array di stringhe) come:

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

Come sostituireste i seguenti punti interrogativi per specificare una matrice di oggetti?

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

5
possibile duplicato del valore di ritorno e del parametro
Gajus

Risposte:


180

Dovresti essere più specifico su cosa intendi per JSDoc: questo è un termine generico che copre praticamente tutti gli strumenti di documentazione in stile JavaDoc per JavaScript.

La sintassi che hai utilizzato per l'array di stringhe è simile a quella supportata da Google Closure Compiler .

Usando questo, un array di oggetti sarebbe:

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

O solo una serie di qualsiasi cosa: dovrebbe funzionare praticamente con tutti gli strumenti di documentazione:

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

jsdoc-toolkit , JSDoc 3 e JSDuck supportano la seguente sintassi per denotare un array di oggetti:

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

MODIFICARE

Nel caso in cui conosci le chiavi e il tipo di variabile dei valori puoi anche fare:

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

o

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

10
Il . la notazione è ora deprecata e il suo supporto dovrebbe essere abbandonato in seguito. La versione corretta corrente è {Array<Object>}. Solo per mantenere aggiornato questo post.
Kenny806

2
Con JSDoc 3, come documenteresti un array di array di stringhe? Nella vecchia sintassi potrei fare qualcosa del tipoArray.<string[]>
Snekse

9
@ Kenny806 Deprecato? Un documento di riferimento per favore?
Wilt

2
@Wilt: la documentazione JSDoc è contraddittoria riguardo al punto prima delle parentesi angolari.
Dan Dascalescu

2
Questa risposta non spiega come dichiarare le chiavi degli oggetti in quell'array e come dichiarare un array di oggetti con chiavi specifiche come tipo restituito. Questa risposta sì.
Dan Dascalescu
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.