请参阅在JSDoc中键入不同文件而不导入

时间:2017-12-26 10:22:21

标签: javascript visual-studio-code jsdoc

我在Visual Studio Code中编写JavaScript(ES6)代码并启用了VSCode的类型检查,如VSCode docs中所述。

当引用在另一个文件中定义的类型(在下面的示例中为Track)时,我收到类似 [js]的错误在JSDoc中找不到名称'Track'除非我导入它,否则引用该类型。当我导入此类型时,我从ESLint收到错误: [eslint]'Track'已定义但从未使用过。 (无未使用-VARS)

我不想禁用ESLint规则。有没有办法为VSCode中的类型检查导入类型?

import Track from './Track';

export default class TrackList {

  /**
   * Creates a new track list.
   * @param {Iterable<Track>} tracks the tracks to include
   */
  constructor(tracks) {
    this._tracks = tracks ? Array.from(tracks) : [];
  }
...

3 个答案:

答案 0 :(得分:2)

只是为了更新此主题:

使用typescript@2.9,您将能够导入自动导出的JSDoc typedef

使用真实的工作示例查看this issue。 您还可以沿着webpack的代码查看他们如何使用JSDoc和typescript ti静态地填充他们的纯JS源代码库。这里是their issue,其中包含JSDoc约定,您可以在其中获得内容。

答案 1 :(得分:1)

我有类似的问题,这就是我如何解决它。

//file.d.ts
export interface Foo {
    bar: number;
}

export as namespace Baz;

这样做会使Baz名称空间全局化,因此您可以在任何地方使用它而无需导入

/**
 * @param {Baz.Foo} arg 
 */
function test(arg) {

}

现在你在VSCode中获得智能感知和类型检查 VS Code

答案 2 :(得分:0)

禁用es-lint警告的解决方法:在未使用导入的行末使用expo start -c注释。

//eslint-disable-line no-unused-vars