Wie kann ich JSDoc über die Struktur eines zurückgegebenen Objekts informieren? Ich habe die @return {{field1: type, field2: type, ...}} description
Syntax gefunden und ausprobiert:
/**
* Returns a coordinate from a given mouse or touch event
* @param {TouchEvent|MouseEvent|jQuery.Event} e
* A valid mouse or touch event or a jQuery event wrapping such an
* event.
* @param {string} [type="page"]
* A string representing the type of location that should be
* returned. Can be either "page", "client" or "screen".
* @return {{x: Number, y: Number}}
* The location of the event
*/
var getEventLocation = function(e, type) {
...
return {x: xLocation, y: yLocation};
}
Während dies erfolgreich analysiert wird, heißt es in der resultierenden Dokumentation einfach:
Returns:
The location of an event
Type: Object
Ich entwickle eine API und brauche Leute, die über das Objekt Bescheid wissen, das sie zurückgeben werden. Ist das in JSDoc möglich? Ich verwende JSDoc3.3.0-beta1.
javascript
documentation-generation
jsdoc
code-documentation
jsdoc3
Schwarzer Wolf
quelle
quelle
@typedef
eine Problemumgehung / Lösung ist, aber es scheint seltsam, dass dies nicht mit wörtlichen Objekten funktioniert. Wenn jemand in Zukunft darauf stößt (wie ich), habe ich ein Problem hinzugefügt, github.com/jsdoc/jsdoc/issues/1678 , das mehr Informationen als diese Seite enthalten könnte.Antworten:
Definieren Sie Ihre Struktur separat mit einem @typdef :
Und verwenden Sie es als Rückgabetyp:
quelle
@return
Anweisungen funktionieren zwar, aber sie werden in der Ausgabe so aufgelistet, als wären sie mehrere Rückgaben (Ein Aufzählungspunktpoint - Object
und dann zwei weitere Aufzählungspunkte fürpoint.x - Number
undpoint.y - Number
). Obwohl ich damit leben kann, gibt es vermutlich keine Möglichkeit, eine komprimierte Ausgabe des zurückgegebenen Objekts zu erhalten. Oder zumindest die Einträge fürpoint.x
undpoint.y
eingerückt?@typedef
Ansatz ist der klarste in Bezug auf die Dokumentationsausgabe, danke!@inner
Definition hinzufügen oder eingeben, dieglobal
in der Dokumentation enthalten ist. +1@typedef {Object} Point
. Die Verwendung dieses zweizeiligen Formulars wirdPoint
in PhpStorm mit der Meldung "Nicht aufgelöste Variable oder Typ Point" hervorgehoben. Die@typedef
Dokumente unterstützen dies, aber ich möchte diese Antwort nicht bearbeiten, wenn es sich um eine gültige Variante handelt.Als Alternative zu den bereits veröffentlichten Vorschlägen können Sie dieses Format verwenden:
Dies ergibt die folgende Dokumentationsausgabe:
quelle
Eine saubere Lösung besteht darin, eine Klasse zu schreiben und diese zurückzugeben.
quelle
Point
kein Konstruktor ist, um zu ändern, die den Körper derPoint
Funktion durchthis.x = x; this.y = y;
new
Syntax ist das Erstellen einer Instanz aus demconstructor
. Ohne wärenew
der Kontext vonthis
der globale Kontext. Sie können versuchen, eine Instanz zu erstellen, ohnenew
den Effekt zu sehen.