所以,我在.ts文件中有这段代码:
import {MicroEventInterface} from '../Interfaces';
export default class MicroEvent implements MicroEventInterface {
// code
ESLint会引发此错误:
我在ESLint中具有TypeScript的配置:
typescript: {
extends: [
'plugin:@private/private/react' // private rep with React config
],
parser: '@typescript-eslint/parser',
plugins: [
'@typescript-eslint',
'import'
],
settings: {
'import/resolver': {
'node': {
'extensions': [
'.js',
'.jsx',
'.ts',
'.tsx'
],
'moduleDirectory': [
'node_modules/',
'src/'
]
}
},
react: {
createClass: 'createClass',
pragma: 'React',
version: '0.14.9'
}
}
}
所以,一切似乎都很好,但我无法克服这个错误。
有什么建议吗?
谢谢!
UPD:
好像我的console.log(
--- , MicroEventInterface);
错误消失了。我认为,ESLint不会将implements
视为实际用法。
答案 0 :(得分:16)
来源:我是typescript-eslint
项目的维护者。
@typescript-eslint
工具的最新版本现已全面支持范围分析。
现在可以解决此问题的步骤:
@typescript-eslint/parser
和@typescript-eslint/eslint-plugin
的v4.1.0 @typescript-eslint/no-unused-vars
no-unused-vars
规则-see this FAQ article in the project。重新启动您的IDE,现在您应该看到正确的棉绒错误。
答案 1 :(得分:15)
使用@typescript-eslint/no-unused-vars-experimental
并关闭@typescript-eslint/no-unused-vars
。
该问题已在后一版本中得到解决(实验性)。
示例配置:
// .eslintrc
{
...
"rules": {
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-unused-vars-experimental": "error"
}
...
}
答案 2 :(得分:10)
将此添加到Eslint规则
"rules": {
"@typescript-eslint/no-unused-vars": [
2,
{
"args": "none"
}
]
}
答案 3 :(得分:1)
我相信解决此问题的正确方法是声明您的接口。
declare interface Foo {}
与其他类型(例如Foo.d.ts)一起在单独的文件中
然后,正确配置您的打字稿编译器以提取所有声明。
请参阅:https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
部分: @类型,类型根和类型
之后,您将可以使用所有类型声明和接口,而无需显式导入。
答案 4 :(得分:1)
要在纯TypeScript项目中解决此问题,我在eslint配置文件(.eslintrc.json
)中添加了以下规则。为了使此特定解决方案起作用,必须遵循以下约定:接口名称以大写字母“ I”开头。
顺便说一下,其他工件(即类)的首字母大写“ I”在考虑是否在文件/模块中使用时将被忽略。
...
"rules": {
... other rules omitted ...,
"no-unused-vars": [
"warn",
{
"vars": "all",
"varsIgnorePattern": "[I]\\w+"
}
]
}
...
有关此规则的更多信息,请参见documentation。