使用名称空间作为Closure Compiler

时间:2016-08-22 18:42:05

标签: angularjs firebase google-closure-compiler

在我用闭包编译器编译的角度项目中,我使用Firebase(单独加载)。 extern文件包含:

/**
 * @namespace
 */
var firebase = {};

我有一些函数将整个firebase作为参数(由AngularFire提供为"Firebase"),但我不能正确地注释它的类型。编译器说

WARNING - Bad type annotation. Unknown type firebase
 * @param {firebase} Firebase
           ^

如果我从内部使用任何东西,例如firebase.authfirebase.database,它有效,但我得到的对象是整个命名空间。

如何使Closure Compiler接受命名空间作为@param中的类型,以理解参数?这是一个错误或功能吗? (写一个typedef是一个很好的解决方法吗?)

1 个答案:

答案 0 :(得分:1)

Closure编译器不支持此用例。命名空间是匿名类型,不是命名类型。无法在当前类型系统中适当地引用命名空间类型。

请参阅https://github.com/google/closure-compiler/issues/266