在我用闭包编译器编译的角度项目中,我使用Firebase(单独加载)。 extern文件包含:
/**
* @namespace
*/
var firebase = {};
我有一些函数将整个firebase作为参数(由AngularFire提供为"Firebase"
),但我不能正确地注释它的类型。编译器说
WARNING - Bad type annotation. Unknown type firebase
* @param {firebase} Firebase
^
如果我从内部使用任何东西,例如firebase.auth
或firebase.database
,它有效,但我得到的对象是整个命名空间。
如何使Closure Compiler接受命名空间作为@param
中的类型,以理解参数?这是一个错误或功能吗? (写一个typedef是一个很好的解决方法吗?)
答案 0 :(得分:1)
Closure编译器不支持此用例。命名空间是匿名类型,不是命名类型。无法在当前类型系统中适当地引用命名空间类型。