Ecmascript 6 避免eslint错误导入VS代码intellisense时无未使用的变量

Ecmascript 6 避免eslint错误导入VS代码intellisense时无未使用的变量,ecmascript-6,visual-studio-code,eslint,Ecmascript 6,Visual Studio Code,Eslint,在使用ES6类时,我希望在VS代码中使用Intellisense完成代码。为了实现这一点,我导入了一个类并添加了JSDoc标记,以告诉VS代码该类在特定方法中使用。这很好,但是当我打开此规则时,ESLint抱怨导入语句没有未使用的变量。原因是导入的类仅在JSDoc中引用,而在实际的JavaScript代码中没有引用 考虑这个例子: class1.js import Class2 from './class2'; // ESLint complains about no-unused-vars h

在使用ES6类时,我希望在VS代码中使用Intellisense完成代码。为了实现这一点,我导入了一个类并添加了JSDoc标记,以告诉VS代码该类在特定方法中使用。这很好,但是当我打开此规则时,ESLint抱怨导入语句没有未使用的变量。原因是导入的类仅在JSDoc中引用,而在实际的JavaScript代码中没有引用

考虑这个例子:

class1.js

import Class2 from './class2'; // ESLint complains about no-unused-vars here

export class Class1 {
    /**
     * @param {Class2} foo 
     */
    anotherMethod(foo) {
        foo.someMethod(); // Intellisense and code-completion works for foo.
    }
}
class2.js

export default class Class2 {
    someMethod() { }
}

对于仅在JSDoc中引用的导入,是否有任何方法可以在不完全关闭它的情况下不获取“无未使用的vars”错误?

注意:如果导入有副作用,您应该小心使用此方法!ES模块很少见,但仍有可能

import Class2 from './class2'; // eslint-disable-line no-unused-vars
你不能用JavaScript来解决这个问题

在TypeScript中,您可以:

// @ts-ignore
type Class2 = import ("./class2").default;
在不影响运行时的情况下引用类的正确方法是在JSDoc中使用TypeScript样式的导入。我的VSCode似乎没有注意到将鼠标悬停在上面的Class2类型,它只是说“any”类型,但您可能会更幸运

以下是方法:

/**
 * @typedef {import("./class2").default} Class2
 * @param {Class2} view
 */
或者简单地说:

/**
 * @param {import("./class2").default} view
 */

您可以使用

npm安装-保存dev eslint插件jsdoc 然后只需添加到.eslintrc文件:

规则:{ jsdoc/没有未定义的类型:1 }, 插件:[ jsdoc ] 从:

没有未定义的类型

检查是否定义了jsdoc注释中的类型。这可以用来 检查未导入的类型

启用此规则时,jsdoc注释中的类型将按使用方式解析 变量,即,不使用未使用的变量不会标记为未使用