在使用ES6类时,我希望在VS代码中使用带有代码完成的Intellisense。为了实现这一点,我导入了一个类并添加了JSDoc标记,以告诉VS代码这个类是在特定方法中使用的。这很好,但是当我打开这个规则时,ESLint会抱怨导入语句中没有未使用的-vars。原因是导入的类仅在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错误?
发布于 2019-08-09 21:03:57
注意:您应该小心使用这个,以防导入有副作用!(极少数带有ES模块,但仍有可能)
import Class2 from './class2'; // eslint-disable-line no-unused-vars你不能在JavaScript本身就这样.
在TypeScript中,您可以:
// @ts-ignore
type Class2 = import ("./class2").default;在不影响运行时的情况下引用类的正确方法是在JSDoc中使用类型记录样式的导入。我的VSCode似乎没有选择Class2的类型(悬停在它上面,它只是说‘任何’类型),但是你可能会有更多的运气。
下面是操作步骤:
/**
* @typedef {import("./class2").default} Class2
* @param {Class2} view
*/或者简单地说:
/**
* @param {import("./class2").default} view
*/发布于 2021-02-18 14:28:16
您可以使用eslint-plugin-jsdoc实现这一点。
npm install --save-dev eslint-plugin-jsdoc然后添加到您的.eslintrc文件:
"rules": {
"jsdoc/no-undefined-types": 1
},
"plugins": [
"jsdoc"
]来自文档
no-undefined-types 检查是否定义了jsdoc注释中的类型。这可以用于检查未导入的类型。 启用此规则时,jsdoc注释中的类型将解析为已使用的变量,即不会被未使用的-vars标记为未使用。
发布于 2022-11-22 17:46:11
可以使用下划线前缀来绕过linter:
import {Class2 as _tsdoc_Class2} from './class2';
/**
* @param {_tsdoc_Class2} view
*/https://stackoverflow.com/questions/57436725
复制相似问题