ESLint - 为 TypeScript 配置“no-unused-vars”

新手上路,请多包涵

我在我的所有 TypeScript 项目中使用 ESLint,设置如下:

   "extends": ["airbnb", "prettier", 'plugin:vue/recommended'],
  "plugins": ["prettier"],
  "parserOptions": {
  "parser": "@typescript-eslint/parser",
  "ecmaVersion": 2018,
  "sourceType": "module"
  },

  • 一堆自定义规则。我还为 TypeScript 支持安装了以下依赖项:
     "@typescript-eslint/eslint-plugin": "^1.7.0",
    "@typescript-eslint/parser": "^1.7.0",

但是,ESLint 最有用的规则之一 https://eslint.org/docs/rules/no-unused-vars 似乎对 TypeScript 项目的配置很差。例如,当我导出一个枚举时,该规则会警告我该枚举未在声明它的文件中使用:

 export enum Foo {
   Bar,
}

同样,当我导入要用作类型的接口或类时,“no-unused-vars”将在实际导入的行再次抱怨:

脚下

export interface Foo {
   bar: string;
}

在 bar.ts

 import { Foo } from './Foo'
const bar: Foo = { bar: 'Hello' };

有没有办法配置 no-unused-vars 规则来考虑这两种情况?我不喜欢禁用该规则,因为它是我的整个规则集中在这些情况之外最有用的规则之一。

我已经将规则降级为只给出警告而不是错误,但是让我的所有文档都充满警告仍然有点违背使用 esLint 的目的。

按照 这里 的建议用 //eslint-disable-line 填充我的所有文档似乎也是一个糟糕的解决方案。

原文由 Rins 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
2 个回答

它有点隐藏在 文档 中,但是如果你在 ‘extends’ 属性中添加一些东西,你可以使用 ESLint 推荐的规则,如 no-unused-vars,并让它在 Typescript 中实际工作。像这样:

 "extends": [
        "eslint:recommended",
        "plugin:@typescript-eslint/eslint-recommended",
        "plugin:@typescript-eslint/recommended"
    ],

@typescript-eslint/recommended 似乎是允许 eslint:recommended 有效处理 Typescript 构造的东西。不确定它会如何影响您的其他扩展。

原文由 dolios 发布,翻译遵循 CC BY-SA 4.0 许可协议

我使用这个配置,它工作正常

{
  "env": {
    "browser": true,
    "es2021": true,
    "node": true,
    "jest": true
  },
  "extends": ["airbnb-base", "prettier"],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaVersion": "latest",
    "sourceType": "module"
  },
  "plugins": ["@typescript-eslint", "jest"],
  "rules": {
    "import/extensions": "off",
    "@typescript-eslint/no-unused-vars": ["error"]
  },
  "settings": {
    "import/resolver": {
      "node": {
        "extensions": [".js", ".jsx", ".ts", ".tsx"]
      }
    }
  }
}

原文由 user19357257 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Stack Overflow 翻译
子站问答
访问
宣传栏