首页 > 解决方案 > Eslint 说 Typescript 应用程序中的所有枚举“已经在上层范围内声明”

问题描述

启动一个新应用程序,我安装了 eslint 并使用以下配置对其进行了配置,但是每次我创建一个enum它时它都说它已经被定义了。甚至是无意义的字符串。其他变量类型(const、var、let)没有这个问题。我可以禁用该规则,但我希望它适用于它实际上是真的情况。

    {
  "root": true,
  "parser": "@typescript-eslint/parser",
  "plugins": ["@typescript-eslint"],
  "parserOptions": {
    "project": ["./tsconfig.json"],
    "ecmaFeatures": {
      "ecmaVersion": 6,
      "jsx": true
    }
  },
  "overrides": [],
  "extends": [
    "airbnb-typescript",
    "prettier",
    "prettier/@typescript-eslint",
    "plugin:@typescript-eslint/recommended-requiring-type-checking"
  ],
  "rules": {
    "spaced-comment": 0,
    "import/prefer-default-export": 0,
    "@typescript-eslint/no-use-before-define": 0,
    "@typescript-eslint/restrict-template-expressions": [
      1,
      { "allowBoolean": true }
    ],
    "react/jsx-props-no-spreading": "off",
    "react/state-in-constructor": 0,
    "react/require-default-props": 0,
    "react/destructuring-assignment": [
      1,
      "always",
      {
        "ignoreClassFields": true
      }
    ]
  }
}

在此处输入图像描述

标签: node.jstypescripteslint

解决方案


如果您是 TSLint-to-ESLint 的用户,这是一个已修复的错误,因此使用较新版本重新运行脚本也可以解决问题,或者只是禁用no-shadow并启用@typescript-eslint/no-shadow

如果您正在使用一些滥用规则的公共配置,请务必让他们知道,仍然遇到此问题的人数有些惊人。


请参阅@typescript-eslint/no-shadow 如何使用部分的常见问题解答

如何使用

{
  // note you must disable the base rule as it can report incorrect errors
  "no-shadow": "off",
  "@typescript-eslint/no-shadow": ["error"]
}

搜索typescript-eslint GitHub 问题显示许多人都在问同样的问题。


推荐阅读