【问题标题】:ESlint Angular - no-unused-vars hits type definitionESlint Angular - no-unused-vars 命中类型定义
【发布时间】:2020-01-08 02:12:29
【问题描述】:

我正在升级/重构一个 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 不是一种选择

【问题讨论】:

    标签: javascript angular typescript eslint


    【解决方案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" 行覆盖了不适用于 TypeScript 的 eslint:recommended 规则,尤其是 no-unused-vars 规则。

    希望对您有所帮助!

    【讨论】:

      【解决方案2】:

      我在使用no-use-before-define 的角度项目中遇到了类似的问题,所以我发现我必须使用@typescript-eslint 前缀,它有效。 现在看起来像这样:

      '@typescript-eslint/no-use-before-define': 'warn'
      

      我的解析选项也有点不同:

       parserOptions: {
          ecmaVersion: 6,
          project: 'tsconfig.json',
          sourceType: 'module',
          ecmaFeatures: {
              modules: true
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2019-07-06
        • 1970-01-01
        • 2020-03-01
        • 2020-01-25
        • 2020-12-25
        • 2021-02-22
        • 2018-06-27
        相关资源
        最近更新 更多