我在所有的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,
}

类似地,当我导入要用作类型的接口或类时,"没有未使用的变量"会在实际导入的行上再次抱怨:

In Foo.ts

export interface Foo {
   bar: string;
}

In bar.ts

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

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

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

用建议的//eslint disable line here填充我的所有文档似乎也是一个糟糕的解决方案.

推荐答案

它有点隐藏在the documentation中,但是如果您向"extends"属性添加一些内容,您可以使用ESLint推荐的规则,比如不使用未使用的变量,并让它在Typescript中实际工作.就像这样:

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

@typescript eslint/recommended似乎是允许eslint:recommended有效处理typescript构造的东西.但不确定这会对其他扩展产生什么影响.

Typescript相关问答推荐

在控制器中使用@ DeliverGuards时实现循环依赖项时未定义的依赖项

"@ clerker/nextjs/server没有名为clerkMiddleware的导入成员'

无需刷新即可让现场访客逆变

有没有可能使用redux工具包的中间件同时监听状态的变化和操作

使用React处理Websocket数据

在泛型类型中对子代执行递归时出错

如何键入函数以只接受映射到其他一些特定类型的参数类型?

如何按不能保证的功能过滤按键?

使用2个泛型类型参数透明地处理函数中的联合类型

ANGLING v17 CLI默认设置为独立:延迟加载是否仍需要@NgModule进行路由?

寻址对象中路径的泛型类型

TypeScrip:从对象中提取和处理特定类型的键

在Mac和Windows上运行的Web应用程序出现这种对齐差异的原因是什么?(ReactNative)

如何在React组件中指定forwardRef是可选的?

TypeScrip错误:为循环中的对象属性赋值

Typescript -返回接口中函数的类型

如何从一个泛型类型推断多个类型

Angular 16将独立组件作为对话框加载,而不进行布线或预加载

Vite+Chrome扩展 list v3-;不能在模块外使用import语句;对于inpage脚本

换行TypeScript';s具有泛型类型的推断数据类型