2013-10-08 22 views
6

Das Tag JSDoc @type ermöglicht die Angabe eines Variablentyps, z. B. /** @type {Number} */. Allerdings habe ich auch /** @type Number */ ohne die geschweiften Klammern gesehen, und es scheint ebenso gültig.Wofür sind JSDoc @ type geschweifte Klammern?

Use JSDoc hat ein Beispiel sowohl mit als auch ohne die geschweiften Klammern, aber diskutiert nicht den Unterschied. Die Dokumentation Google Closure Compiler impliziert, dass alle Deklarationen geschweifte Klammern haben müssen, aber nicht angeben, was passiert, wenn sie nicht ausgeführt werden.

Sind die geschweiften Klammern wichtig? Wenn ja warum? Und wenn nicht, sollte ich sie benutzen oder nicht?

+0

Sieht aus wie [http://usejsdoc.org/tags-type.html] hat kein braceless-Beispiel mehr. Aber persönlich denke ich, dass die Syntax ohne Klammern viel besser vom Parser in meinem Kopf gelesen werden kann. – Lambart

Antwort

4

Meine beste Vermutung ist, dass die geschweiften Klammern für den Parser da sind, da einige Typspezifikationen Leerzeichen in ihnen haben können.

z. Ein Objekt mit String-Schlüssel und Zahlenwerten:

{Object.<string, number>} 

auf dem Parser benötigt eine einfache Art (zB string) kann nicht die geschweiften Klammern Je nach dem Parser das erste Leerzeichen als Ende der Typdeklaration lesen.

edit: Weitere Informationen deuten darauf hin, dass geschweifte Klammern erforderlich sind, daher ist es ein Fehler, sie wegzulassen, ABER einige (wenn nicht die meisten/alle) Parser verwerfen schlampige Typdefinitionen, wenn sie wie oben behandelt werden können.

tldr: Sie sind wichtig, aber Sie können wegkommen, ohne sie in einigen Fällen zu verwenden.

+0

Laut @ Lambart's Kommentar weiß ich nicht, ob das immer noch so ist, aber es ist die beste Antwort standardmäßig! – orlade

+0

Welche weitere Lektüre schlägt vor, dass geschweifte Klammern erforderlich sind? Einige Teile der offiziellen JSDoc-Dokumentation verwenden diese nicht, z. http://usejsdoc.org/tags-augments.html – Alicia

Verwandte Themen