vscode JavaScript - 跨文件的引用类型

时间:2018-03-16 21:35:40

标签: visual-studio-code intellisense jsdoc

如何使用JavaScript和CommonJS从VSCode中的另一个文件引用未导出的类型(如MyClass)?

我尝试将@module用作dictated by JSDoc,但它不起作用。 VSCode不支持这个吗?

我们说我有两个文件:

myFactory.js

/**
 * @module MyModule
 */

class MyClass {}
const myFactory = {
  create() {
    return new MyClass();
  }
}
module.exports = myFactory;

doSomething.js

const myFactory = require('./myFactory');

/**
 * @param {MyClass} item
 */
function doSomething1(item) {}

/**
 * @param {MyModule.MyClass} item
 */
function doSomething2(item) {}

/**
 * @param {module:MyModule.MyClass} item
 */
function doSomething3(item) {}


doSomething.js中,VSCode的Intellisence不知道MyClass所以所有3个函数签名都是这样的:

(local function) doSomethingX(item: any): void

而不是

(local function) doSomethingX(item: MyClass): void


这是我的jsconfig.json

{
  "compilerOptions": {
    "target": "es2017"
  }
}

1 个答案:

答案 0 :(得分:0)

尝试将 MyClass 移动到单独的文件中,并为所有文件设置相同的 @namespace

<强> MyClass.js:

/** @namespace MyNamespace */

/** This is my class */
class MyClass {}

<强> myFactory.js:

/** @namespace MyNamespace */

const myFactory = require('./MyClass');

const myFactory = {
  create() {
    return new MyClass();
  }
}
module.exports = myFactory

<强> doSomething.js:

/** @namespace MyNamespace */

const myFactory = require('./myFactory');

/** @param {MyClass} item */
function doSomething1(item) {}