Inzwischen gibt es 4 verschiedene Möglichkeiten, Objekte als Parameter / Typen zu dokumentieren. Jeder hat seine eigenen Verwendungen. Nur 3 davon können jedoch zur Dokumentation von Rückgabewerten verwendet werden.
Für Objekte mit bekannten Eigenschaften (Variante A)
/**
* @param {{a: number, b: string, c}} myObj description
*/
Diese Syntax ist ideal für Objekte, die nur als Parameter für diese Funktion verwendet werden und keine weitere Beschreibung jeder Eigenschaft erfordern. Es kann verwendet werden @returns
als auch .
Für Objekte mit bekannten Eigenschaften (Variante B)
Sehr nützlich sind die Parameter mit Eigenschaftensyntax :
/**
* @param {Object} myObj description
* @param {number} myObj.a description
* @param {string} myObj.b description
* @param {} myObj.c description
*/
Diese Syntax ist ideal für Objekte, die nur als Parameter für diese Funktion verwendet werden und für die eine weitere Beschreibung der einzelnen Eigenschaften erforderlich ist. Dies kann nicht für verwendet werden @returns
.
Für Objekte, die an mehr als einem Punkt in der Quelle verwendet werden
In diesem Fall ist ein @typedef sehr praktisch. Sie können den Typen an einem Punkt in Ihrer Quelle definieren und verwenden Sie es als eine Art für @param
oder @returns
oder andere JSDoc Tags , die Verwendung von einer Art machen.
/**
* @typedef {Object} Person
* @property {string} name how the person is called
* @property {number} age how many years the person lived
*/
Sie können dies dann in einem @param
Tag verwenden:
/**
* @param {Person} p - Description of p
*/
Oder in einem @returns
:
/**
* @returns {Person} Description
*/
Für Objekte, deren Werte alle vom gleichen Typ sind
/**
* @param {Object.<string, number>} dict
*/
Der erste Typ (Zeichenfolge) dokumentiert den Typ der Schlüssel, der in JavaScript immer eine Zeichenfolge ist oder zumindest immer zu einer Zeichenfolge gezwungen wird. Der zweite Typ (Nummer) ist der Typ des Werts; Dies kann ein beliebiger Typ sein. Diese Syntax kann auch für verwendet werden @returns
.
Ressourcen
Nützliche Informationen zu Dokumentationsarten finden Sie hier:
https://jsdoc.app/tags-type.html
PS:
Um einen optionalen Wert zu dokumentieren, können Sie Folgendes verwenden []
:
/**
* @param {number} [opt_number] this number is optional
*/
oder:
/**
* @param {number|undefined} opt_number this number is optional
*/