簡體   English   中英

Google Closure:如何注釋用作構造函數的參數

[英]Google Closure: How to annotate a parameter used as a constructor

我使用require.js進行依賴關系管理和Google Closure注釋,使我能夠自動完成(在WebStorm / IDEA中)。 我們非常依賴Backbone並以類似Java的方式開發我們的Javascript代碼 - 即使用靜態和實例方法。

遺憾的是如何正確地為函數參數編寫注釋,這些函數參數實際上是類 - 與new關鍵字一起使用的參數。

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

WebStorm和/或Google Closure正確地假設它是Foo的一個實例,如果我按如下方式注釋參數:

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

快速谷歌搜索建議使用函數(new:Foo)作為參數描述。 但是,這種方法會丟失構造函數參數和/或類所具有的靜態方法的自動完成。

我希望的構造應該類似於這個:

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

有沒有辦法實現這個目標?

您正在尋找

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

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

function(new: Foo, ArgType1, ArgType2)

從有關段落文檔

運營商名稱:功能new類型:

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

一個函數,它接受一個參數(一個字符串),並在使用'new'關鍵字調用時創建一個新的goog.ui.Menu實例。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM