Bis jetzt gibt es 4 verschiedene Möglichkeiten, Objekte als Parameter/Typen zu dokumentieren. Jede hat ihre eigenen Verwendungszwecke. Nur 3 davon können jedoch zur Dokumentation von Rückgabewerten verwendet werden.
Für Objekte mit einem bekannten Satz von Eigenschaften (Variante A)
/**
* @param {{a: number, b: string, c}} myObj Beschreibung
*/
Dies ist ideal für Objekte, die nur als Parameter für diese Funktion verwendet werden und keine weitere Beschreibung jeder Eigenschaft erfordern. Es kann auch für @returns
verwendet werden.
Für Objekte mit einem bekannten Satz von Eigenschaften (Variante B)
Sehr nützlich ist die Syntax Parameter mit Eigenschaften:
/**
* @param {Object} myObj Beschreibung
* @param {number} myObj.a Beschreibung
* @param {string} myObj.b Beschreibung
* @param {} myObj.c Beschreibung
*/
Diese Syntax ist ideal für Objekte, die nur als Parameter für diese Funktion verwendet werden und eine weitere Beschreibung jeder Eigenschaft erfordern. Dies kann nicht für @returns
verwendet werden.
Für Objekte, die an mehreren Stellen im Quellcode verwendet werden
In diesem Fall ist ein @typedef sehr nützlich. Sie können den Typ an einer Stelle in Ihrem Quellcode definieren und ihn als Typ für @param
oder @returns
oder andere JSDoc-Tags verwenden, die einen Typ verwenden können.
/**
* @typedef {Object} Person
* @property {string} name wie die Person genannt wird
* @property {number} age wie viele Jahre die Person gelebt hat
*/
Sie können dies dann in einem @param
Tag verwenden:
/**
* @param {Person} p - Beschreibung von p
*/
Oder in einem @returns
:
/**
* @returns {Person} Beschreibung
*/
Für Objekte, deren Werte alle denselben Typ haben
/**
* @param {Object.} dict
*/
Der erste Typ (string) dokumentiert den Typ der Schlüssel, der in JavaScript immer eine Zeichenfolge ist oder zumindest immer zu einer Zeichenfolge gezwungen wird. Der zweite Typ (number) ist der Typ des Werts; dies kann jeder Typ sein. Diese Syntax kann auch für @returns
verwendet werden.
Ressourcen
Nützliche Informationen zum Dokumentieren von Typen finden Sie hier:
https://jsdoc.app/tags-type.html
PS:
Um einen optionalen Wert zu dokumentieren, können Sie []
verwenden:
/**
* @param {number} [opt_number] Diese Zahl ist optional
*/
oder:
/**
* @param {number|undefined} opt_number Diese Zahl ist optional
*/
0 Stimmen
Beginnen Sie mit TypeScript, JavaScript ist einfach genug, um es zu vermeiden, wenn möglich.