JSDoc文档说JSDoc仅用于生成API文档,但我们也使用Google的Closure Compiler进行高级编译
在函数范围内,我们有很多字符串,例如
var cssLeft, cssTop, cssWidth, cssHeight, cssMinWidth, cssMinHeight, cssMaxWidth,
cssMaxHeight, cssTransform;
是否有理由在每个变量中包含@type {string}
?
答案 0 :(得分:1)
对于JSDoc,没有必要,因为变量没有暴露。
对于Google Closure编译器,定义类型不会造成伤害,并且可能加快速度和/或缩小生成的代码
使用@type的原因:没有理由不
答案 1 :(得分:1)
如果值类型已知,Closure Compiler通常会推断出局部变量的类型。声明值的类型使编译器可以在分配值时告诉您该值是否为意外类型。如果您没有重新分配EcmaScript 6" const"是优选的,或者简单地只是@const:
/** @const */ var x = ...
请注意,Closure Compiler还支持" inline"如果决定要声明类型,请键入语法:
var /** string */ x = ..., /** string */ y = ...
答案 2 :(得分:1)
根据您指定可见性的经验,您可以在编译期间获得更简洁和高级的编译错误检查。
来自封闭编译器Doc
将成员标记为私有。
只有同一文件中的代码才能访问标记为@private的全局变量和函数。
标记为@private的构造函数只能由同一文件中的代码以及静态和实例成员实例化。
标记为@private的构造函数的公共静态属性也可以在任何地方访问,而instanceof运算符始终可以访问@private成员。
例如:
/ ** *正在侦听此记录器的处理程序。
* @private {Array} * / this.handlers_ = [];
此处有更多信息https://developers.google.com/closure/compiler/docs/js-for-compiler