我正在尝试使用谷歌闭包编译器(我简称为compiler
)来验证这样的JavaScript代码库:
java -jar compiler.jar --js='**.js' --jscomp_error newCheckTypes > NUL 2> gcc.log
问题是我们已经在AMD中有很多代码并且为这样的核心模块编写了注释:
define(function () {
/** @constructor */
MyClass () {}
/** @param {string} s */
MyClass.prototype.myMethod = function (s) {
alert(s);
}
return MyClass;
});
我想在其他模块中引用类型/** @type {MyClass} */
,所以如果我使用错误的参数调用某个方法,它会投诉。
不幸的是,当我使用这种类型的注释时,compiler
输出:
Bad type annotation. Unknown type MyClass
/** @type {MyClass} */
如果我删除了模块去除函数,compiler
“理解”我的声明,但我不想以这种方式重写我们的代码。
有没有办法让compiler
查看我的类型声明并应用于其他模块?
答案 0 :(得分:0)
编译器有--transform_amd_modules
,它会将AMD模块重写为CommonJS。它仅支持有限数量的define
签名,并未得到广泛使用或积极维护。
使用CommonJS模块,您可以使用--process_common_js_modules
标志重写代码并将其重新扫描到可由编译器检查的全局类型。 CommonJS模块功能得到了积极维护。