2013-05-17 66 views
4

我使用require.js進行依賴關係管理和Google Closure註釋,以使我能夠自動完成(在WebStorm/IDEA中)。我們嚴重依賴Backbone,並以類似Java的方式開發Javascript代碼 - 即使用靜態方法和實例方法。谷歌關閉:如何註釋用作構造函數的參數

仍然難以捉摸的是如何正確編寫實際上是類的函數參數的註釋 - 與新的關鍵字一起使用的參數。

require(['foo'], function(Foo) { 
    var bar = new Foo(); 
}); 

WebStorm和/或谷歌封閉正確假設它是一個實例的Foo如果我註釋參數如下:

require(['foo'], 
/** @param {Foo} Foo */ 
function(Foo) { 
    Foo.<cursor> <-- gives me an autocompletion for an instance of Foo 
}); 

quick googling建議使用功能(新:富)作爲參數描述。然而,這種方法失去了構造函數參數和/或類可能的靜態方法的自動完成。

我希望的結構應該像這樣:

require(['foo'], 
/** @param {Type<Foo>} Foo */ 
function(Foo) { 
    Foo.<cursor> <-- gives me an autocompletion for statics of Foo 
}); 

有沒有辦法來實現這一目標?

回答

7

您正在尋找

/** @param {function(new: Foo)} someConstructor */ 

您還可以指定構造函數的參數,通過執行類似

function(new: Foo, ArgType1, ArgType2) 

相關通道從docs

運營商名稱:Functi上new類型:

語法範例:{function(new:goog.ui.Menu, string)}

帶一個參數(字符串),並且當與「新的」關鍵字調用創建的goog.ui.Menu一個新實例的功能。

指定構造函數的構造類型。