2016-08-22 67 views
0

在我使用閉包編譯器編譯的角項目中,我使用了Firebase(單獨加載)。器extern文件包含:在Closure編譯器中使用名稱空間作爲參數類型

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

我有一些功能,這需要整個火力點作爲一個參數(由AngularFire作爲"Firebase"),但我有點不能正確標註其類型。編譯器說

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

如果我使用任何內部firebase.authfirebase.database,它的工作原理,但我得到的對象是整個名稱空間。

如何使Closure編譯器接受命名空間爲@param中的類型,以瞭解參數?它是一個錯誤或功能? (正在爲它寫一個typedef是一個很好的解決方法?)

回答

1

Closure編譯器不支持此用例。命名空間是匿名類型而不是命名類型。沒有辦法在當前類型系統中適當地引用名稱空間類型。

請參閱https://github.com/google/closure-compiler/issues/266

+0

那麼這是什麼東西,將在新型系統中工作? https://github.com/google/closure-compiler/wiki/Using-NTI-(new-type-in​​ference) – Tom

+0

否 - 新類型推斷可以推斷別名的類型,但仍然無法明確提及註釋中的名稱空間或別名的類型。 –

相關問題