我要升级/重构Angular项目(到 Angular 8,Electron 6,Ionic 4 ),我们决定从TSLint切换到ESLint。
我设置了一些规则,它们正在运行,但是我无法摆脱类型定义的no-unused-vars
警告。运行linting时,我会收到OperatorFunction
和Observable
的警告,这显然不是问题。
import { OperatorFunction, Observable, timer } from 'rxjs';
import { tap } from 'rxjs/operators';
export function executeDelayed<T>(fn: () => void, delayTime: number): OperatorFunction<T, T> {
return function executeDelayedOperation(source: Observable<T>): Observable<T> {
//...
}
}
.eslintrc.js 文件使用此配置
module.exports = {
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:prettier/recommended"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module"
},
"plugins": [
"@typescript-eslint"
],
"rules": {
"no-unused-vars": [
"warn",
{
"vars": "local",
"ignoreSiblings": true,
"args": "after-used",
"argsIgnorePattern": "res|next|^err"
}
],
"no-use-before-define": [
"error",
{
"functions": true,
"classes": true
}
]
}
};
我在这里经历了多个类似的问题,但找不到解决方案。任何想法? 无法切换回TSLint 。
答案 0 :(得分:1)
我遇到了类似的问题,但是能够遵循@typescript-eslint/eslint-plugin README的建议来解决。本质上,我只是将extends
部分更改为如下所示:
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
]
更改之后,所有no-unused-vars
错误和警告都消失了。
据我所知,"plugin:@typescript-eslint/recommended"
行覆盖了{Type}不适用于TypeScript的eslint:recommended
规则。
希望有帮助!
答案 1 :(得分:0)
我在使用no-use-before-define
的有角项目中也遇到了类似的问题,因此我发现必须使用@typescript-eslint
前缀,它才有效。
现在看起来像这样:
'@typescript-eslint/no-use-before-define': 'warn'
我的解析选项也有所不同:
parserOptions: {
ecmaVersion: 6,
project: 'tsconfig.json',
sourceType: 'module',
ecmaFeatures: {
modules: true
}
}