Wie kann ein Array von Objekten als Parameter oder Rückgabewert in JSDoc angegeben werden?

105

In JSDoc zeigt die beste Dokumentation, die ich finden kann, Folgendes, wenn Sie ein Array eines bestimmten Typs (z. B. ein Array von Zeichenfolgen) haben:

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

Wie würden Sie die folgenden Fragezeichen ersetzen, um ein Array von Objekten anzugeben?

/**
 * @param {???????} myObjects All of my equally awesome objects
 */
 function blah(myObjects){
     //stuff here...
 }
Strahl
quelle
5
Mögliches Duplikat des Rückgabewerts und Parameters
Gajus

Antworten:

179

Sie sollten genauer sagen, was Sie unter JSDoc verstehen - dies ist ein Oberbegriff, der so ziemlich alle Dokumentationstools im JavaDoc-Stil für JavaScript abdeckt.

Die Syntax, die Sie für ein Array von Zeichenfolgen verwendet haben, ähnelt der von Google Closure Compiler unterstützten .

Wenn Sie dies verwenden, wäre ein Array von Objekten:

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

Oder einfach nur eine Reihe von Dingen - dies sollte mit so ziemlich allen Doc-Tools funktionieren:

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

jsdoc-toolkit , JSDoc 3 und JSDuck unterstützen die folgende Syntax, um ein Array von Objekten zu kennzeichnen:

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

BEARBEITEN

Wenn Sie die Schlüssel und den Variablentyp der Werte kennen, können Sie auch Folgendes tun:

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

oder

/**
 * @param {{myNumber: Number, myString: String, myArray: Array}[]} myObjects
 */
Rene Saarsoo
quelle
10
Das . Die Notation ist jetzt veraltet und ihre Unterstützung sollte später eingestellt werden. Aktuelle korrekte Version ist {Array<Object>}. Nur um diesen Beitrag auf dem neuesten Stand zu halten.
Kenny806
2
Wie würden Sie mit JSDoc 3 ein Array von String-Arrays dokumentieren? In der alten Syntax könnte ich so etwas tunArray.<string[]>
Snekse
9
@ Kenny806 Veraltet? Ein Referenzdokument bitte?
Wilt
2
@Wilt: Die JSDoc-Dokumentation widerspricht dem Punkt vor spitzen Klammern.
Dan Dascalescu
2
Diese Antwort erklärt nicht, wie die Schlüssel der Objekte in diesem Array deklariert werden und wie ein Array von Objekten mit bestimmten Schlüsseln als Rückgabetyp deklariert wird. Diese Antwort tut es.
Dan Dascalescu