Mar*_*nec 4 javascript intellij-idea google-closure webstorm
我使用require.js进行依赖关系管理和Google Closure注释,使我能够自动完成(在WebStorm/IDEA中).我们非常依赖Backbone并以类似Java的方式开发我们的Javascript代码 - 即使用静态和实例方法.
遗憾的是如何正确地为函数参数编写注释,这些函数参数实际上是类 - 与new关键字一起使用的参数.
require(['foo'], function(Foo) {
var bar = new Foo();
});
Run Code Online (Sandbox Code Playgroud)
WebStorm和/或Google Closure正确地假设它是Foo的一个实例,如果我按如下方式注释参数:
require(['foo'],
/** @param {Foo} Foo */
function(Foo) {
Foo.<cursor> <-- gives me an autocompletion for an instance of Foo
});
Run Code Online (Sandbox Code Playgroud)
一个快速谷歌搜索建议使用功能(新:富)作为参数的描述.但是,这种方法会丢失构造函数参数和/或类所具有的静态方法的自动完成.
我希望的构造应该类似于这个:
require(['foo'],
/** @param {Type<Foo>} Foo */
function(Foo) {
Foo.<cursor> <-- gives me an autocompletion for statics of Foo
});
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?
小智 7
您正在寻找
/** @param {function(new: Foo)} someConstructor */
Run Code Online (Sandbox Code Playgroud)
您还可以通过执行类似操作来指定构造函数的参数
function(new: Foo, ArgType1, ArgType2)
Run Code Online (Sandbox Code Playgroud)
从有关段落文档:
运营商名称:功能
new类型:语法示例:
{function(new:goog.ui.Menu, string)}一个函数,它接受一个参数(一个字符串),并
goog.ui.Menu在使用'new'关键字调用时创建一个新实例.指定构造函数的构造类型.