Ecmascript 6 避免eslint错误导入VS代码intellisense时无未使用的变量
在使用ES6类时,我希望在VS代码中使用Intellisense完成代码。为了实现这一点,我导入了一个类并添加了JSDoc标记,以告诉VS代码该类在特定方法中使用。这很好,但是当我打开此规则时,ESLint抱怨导入语句没有未使用的变量。原因是导入的类仅在JSDoc中引用,而在实际的JavaScript代码中没有引用 考虑这个例子: class1.jsEcmascript 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
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注释中的类型将按使用方式解析 变量,即,不使用未使用的变量不会标记为未使用