用于WebStorm IntelliSense的多级构造函数的JSDoc

时间:2015-10-12 16:14:30

标签: javascript webstorm jsdoc commonjs node-modules

(以下所有文件也在此GitHub个回购中)

我目前正在开发一个具有以下结构的节点模块:

- some-module
  - foo.js
  - objects.js
  - index.js

foo.js 包含一个构造函数,该函数将通过module.exports = ConstructorFunction导出:

'use strict';

function Foo(someVar) {
    this.bar = function () {
        return someVar;
    };
}

Foo.prototype.fooBar = function () {
    return 'FooBar';
};


Object.defineProperty(Foo.prototype, 'someProp', { value: 'Hello World!' });

module.exports = Foo;

想象一下,在一个包中有很多文件,比如foo.js,因为这是自动生成的代码(> 50个文件)。

objects.js 需要像foo.js这样的所有文件,并将它们导出到一个对象中,如下所示:

'use strict';

module.exports = {
    Foo: require('./foo')
};

(同样在这里:如果有> 50个文件,objects.js将包含50个定义,如上所示)

index.js 仅导出所需的objects.js文件:module.exports = require('./objects');

现在需要的是以下用法:

'use strict';

var someModule = require('./some-module');

// How to get IntelliSense for constructor function and x?
// Without (!) adding /** @type {Foo} */ here!
var x = new someModule.Foo('Hello!');

console.log(x.someProp);
console.log(x.fooBar());
console.log(x.bar());

是否有可能为new someModule.Foo()获取WebStorm IntelliSense以及生成的实例x?理想情况下,如果不为x添加类型注释,它就有可能(使用它,它会像魅力一样工作)。

我驳回了此示例中的所有jsdoc以重新开始。

提前致谢!

0 个答案:

没有答案