2013-10-08 14 views
6

Il tag JSDoc @type consente di specificare un tipo di variabile, ad esempio /** @type {Number} */. Tuttavia ho anche visto /** @type Number */ senza le parentesi graffe e sembra altrettanto valido.Che cosa sono le parentesi graffe di tipo JSDoc @type?

Use JSDoc ha un esempio con e senza le parentesi graffe, ma non discute la differenza. La documentazione Google Closure Compiler implica che tutte le dichiarazioni devono avere parentesi graffe, ma non specifica cosa succede se non lo fanno.

Le parentesi graffe sono importanti? Se è così, perché? E se no, dovrei usarli o no?

+0

Sembra che [http://usejsdoc.org/tags-type.html] non abbia più un esempio di braceless. Ma personalmente, penso che la sintassi senza braccetto sia molto più leggibile dal parser nella mia testa. – Lambart

risposta

4

La mia ipotesi migliore è che le parentesi graffe siano lì per il parser, in quanto alcune specifiche di tipo possono avere spazi in esse.

es. Un oggetto con chiavi stringa e valori numerici:

{Object.<string, number>} 

seconda del parser di tipo semplice (es stringa) non può avere bisogno le parentesi come il parser leggerà dal primo spazio come la fine della dichiarazione del tipo.

edit: Ulteriore lettura suggerisce che sono necessari le parentesi graffe, così omettendo loro è un errore, ma alcuni (se non la maggior parte tutti i /) parser perdoneranno definizioni sciatta tipo se possono essere trattati come sopra.

tldr: Sono importanti, ma in alcuni casi è possibile scappare senza usarli.

+0

Come da commento di @ Lambart, non so se questo è ancora il caso, ma è la migliore risposta di default! – orlade

+0

Quale ulteriore lettura suggerisce che le parentesi graffe sono obbligatorie? Alcuni pezzi della documentazione ufficiale JSDoc non li usano, ad es. http://usejsdoc.org/tags-augments.html – Alicia