Javascript Google闭包:如何注释用作构造函数的参数

Javascript Google闭包:如何注释用作构造函数的参数,javascript,intellij-idea,google-closure,webstorm,Javascript,Intellij Idea,Google Closure,Webstorm,我使用require.js进行依赖关系管理,并使用Google闭包注释来实现自动完成(在WebStorm/IDEA中)。我们严重依赖主干网,并以类似Java的方式开发Javascript代码,即使用静态和实例方法 仍然难以理解的是,如何正确地为实际上是类的函数参数编写注释——这些参数与new关键字一起使用 如果我对参数进行如下注释,WebStorm和/或Google Closure正确地假设它是Foo的一个实例: require(['foo'], /** @param {Foo} Foo */

我使用require.js进行依赖关系管理,并使用Google闭包注释来实现自动完成(在WebStorm/IDEA中)。我们严重依赖主干网,并以类似Java的方式开发Javascript代码,即使用静态和实例方法

仍然难以理解的是,如何正确地为实际上是类的函数参数编写注释——这些参数与new关键字一起使用

如果我对参数进行如下注释,WebStorm和/或Google Closure正确地假设它是Foo的一个实例:

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

/** @param {function(new: Foo)} someConstructor */
您还可以指定构造函数的参数,方法如下

function(new: Foo, ArgType1, ArgType2)

有关的段落来自:

操作员名称:功能<代码>新建类型:

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

一种函数,它接受一个参数(一个字符串),并在使用“new”关键字调用时创建
goog.ui.Menu
的新实例

指定构造函数的构造类型

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