ESlint Angular-不可使用的变量点击类型定义

时间:2019-09-05 08:03:28

标签: javascript angular typescript eslint

我要升级/重构Angular项目(到 Angular 8,Electron 6,Ionic 4 ),我们决定从TSLint切换到ESLint。

我设置了一些规则,它们正在运行,但是我无法摆脱类型定义的no-unused-vars警告。运行linting时,我会收到OperatorFunctionObservable的警告,这显然不是问题。

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

2 个答案:

答案 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
    }
}