什么是JSDoc @type花括号?

orl*_*ade 6 javascript syntax curly-braces jsdoc

JSDoc @type标记允许指定变量类型,例如/** @type {Number} */.然而,我也看到/** @type Number */没有花括号,它似乎同样有效.

使用JSDoc有一个带有和不带花括号的例子,但没有讨论它们的区别.在谷歌关闭编译文档意味着所有声明必须有大括号,但并没有规定他们不这样做会发生什么.

花括号重要吗?如果是这样,为什么?如果没有,我应该使用它们吗?

Tom*_*ood 5

我最好的猜测是花括号用于解析器,因为某些类型规范中可以有空格。

例如。具有字符串键和数值的对象:

{Object.<string, number>}
Run Code Online (Sandbox Code Playgroud)

根据解析器的不同,简单类型(例如字符串)可能不需要花括号,因为解析器将读取第一个空格作为类型声明的结尾。

编辑:进一步阅读表明需要大括号,因此省略它们是一个错误,但如果可以按上述方式处理,一些(如果不是大多数/全部)解析器将原谅草率的类型定义。

tldr:它们很重要,但在某些情况下您可以不使用它们而逃脱。