跳至主要内容

共享配置

ESLint 可共享配置 提供了一份全面的规则设置列表,您可以从这些设置开始。@typescript-eslint/eslint-plugin 包含内置的配置,您可以从这些配置扩展以引入推荐的初始规则。

除了allstrictstrict-type-checked之外,所有配置都被认为是“稳定的”。规则的添加和删除将被视为重大变更,并且只会发生在主版本升级中。

入门

首先,请参阅入门 > 快速入门,以设置您的 ESLint 配置文件。 包 > typescript-eslint 包含有关tseslint 帮助程序的更多文档。

没有类型检查的项目

如果您的项目没有启用类型化代码风格检查,我们建议您启用recommendedstylistic配置来开始

eslint.config.js
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommended,
...tseslint.configs.stylistic,
);

如果大多数参与您项目开发的开发人员熟悉 TypeScript 和 typescript-eslint,可以考虑将 recommended 替换为 strict

带有类型检查的项目

如果您的项目启用了类型化代码风格检查,我们建议您启用recommended-type-checkedstylistic-type-checked配置来开始

eslint.config.js
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
...tseslint.configs.stylisticTypeChecked,
);

如果大多数参与您项目开发的开发人员熟悉 TypeScript 和 typescript-eslint,可以考虑将 recommended-type-checked 替换为 strict-type-checked

我们建议大多数项目应该从以下之一扩展:

  • recommended: 推荐的代码正确性规则,您可以直接使用,无需额外配置。
  • recommended-type-checked: 包含 recommended + 需要类型信息的额外推荐规则。
  • strict: 包含 recommended + 额外的严格规则,这些规则也可以捕获错误,但比推荐规则更主观。
  • strict-type-checked: 包含 strict + 需要类型信息的额外严格规则。

此外,我们提供了一个stylistic配置,它强制执行简洁一致的代码。我们建议大多数项目应该从以下之一扩展:

  • stylistic: 您无需额外配置即可直接使用的代码风格规则。
  • stylistic-type-checked: 包含 stylistic + 需要类型信息的额外代码风格规则。
注意

这些配置是我们推荐的起点,但您无需按原样使用它们。ESLint 允许在扩展配置之上配置自己的规则设置。请参阅ESLint 的配置规则文档

推荐的代码正确性规则,您可以直接使用,无需额外配置。这些规则的报告几乎总是针对不良实践和/或潜在的错误。recommended 还禁用了已知与 typescript-eslint 规则冲突或在 TypeScript 代码库中导致问题的核心 ESLint 规则。

eslint.config.js
export default tseslint.config(...tseslint.configs.recommended);

查看 configs/recommended.ts 以获取此配置的完整内容。

包含所有 recommended 以及需要类型信息的额外推荐规则。此配置中新添加的规则与 recommended 中的规则类似,同样有用。

eslint.config.js
export default tseslint.config(...tseslint.configs.recommendedTypeChecked);

查看 configs/recommended-type-checked.ts 以获取此配置的完整内容。

strict

包含所有 recommended,以及可以捕获错误的额外严格规则。strict 中添加的规则比推荐规则更具主观性,可能不适用于所有项目。

eslint.config.js
export default tseslint.config(...tseslint.configs.strict);

此配置中,一些在 recommended 中启用的规则默认使用更严格的设置。查看 configs/strict.ts 以获取此配置的完整内容。

提示

我们建议 TypeScript 项目仅在相当一部分开发者精通 TypeScript 的情况下才从 plugin:@typescript-eslint/strict 扩展。

警告

此配置在语义版本控制 (semver) 下不被认为是“稳定的”。其启用的规则或其选项可能会在主要版本更新之外发生更改。

strict-type-checked

包含所有 recommendedrecommended-type-checkedstrict,以及需要类型信息的额外严格规则。在此配置中新添加的规则与 strict 中的规则类似,既有用(也带有主观意见)。

eslint.config.js
export default tseslint.config(...tseslint.configs.strictTypeChecked);

recommended-type-checked 中启用的某些规则在此配置中默认设置为更严格的设置。有关此配置的准确内容,请参阅 configs/strict-type-checked.ts

提示

我们建议 TypeScript 项目仅在相当一部分开发人员精通 TypeScript 的情况下,才从 plugin:@typescript-eslint/strict-type-checked 继承。

警告

此配置在语义版本控制 (semver) 下不被认为是“稳定的”。其启用的规则或其选项可能会在主要版本更新之外发生更改。

stylistic

被认为是现代 TypeScript 代码库最佳实践的规则,但不会影响程序逻辑。这些规则通常对强制执行更简单的代码模式持主观意见。

eslint.config.js
export default tseslint.config(...tseslint.configs.stylistic);

请注意,stylistic 不会替代 recommendedstrictstylistic 添加了额外的规则。

有关此配置的准确内容,请参阅 configs/stylistic.ts

stylistic-type-checked

包含所有 stylistic,以及需要类型信息的额外风格规则。在此配置中新添加的规则与 stylistic 中的规则类似,带有主观意见。

eslint.config.js
export default tseslint.config(...tseslint.configs.stylisticTypeChecked);

请注意,stylistic-type-checked 不会替代 recommended-type-checkedstrict-type-checkedstylistic-type-checked 添加了额外的规则。

有关此配置的准确内容,请参阅 configs/stylistic-type-checked.ts

其他配置

typescript-eslint 包含一些实用程序配置。

all

启用作为 typescript-eslint 部分提供的每个规则。请注意,许多规则并不适用于所有代码库,或者旨在进行配置。

有关此配置的准确内容,请参阅 configs/all.ts

警告

我们不建议 TypeScript 项目从 plugin:@typescript-eslint/all 扩展。许多规则相互冲突,或者旨在根据每个项目进行配置。

警告

此配置在语义版本控制 (semver) 下不被认为是“稳定的”。其启用的规则或其选项可能会在主要版本更新之外发生更改。

base

一个最小的规则集,它仅设置运行 typescript-eslint 所需的解析器和插件选项。我们不建议直接使用它;相反,请从更早的推荐规则扩展。

如果您使用任何推荐的配置,此配置将自动包含在内。

有关此配置的准确内容,请参阅 configs/base.ts

disable-type-checked

一个实用程序规则集,它将禁用类型感知代码检查以及我们项目中可用的所有类型感知规则。如果您希望您的基础配置关注类型感知代码检查,然后有条件地使用 覆盖 来禁用代码库特定子集的类型感知代码检查,此配置非常有用。

有关此配置的准确内容,请参阅 configs/disable-type-checked.ts

info

如果您使用来自其他插件的类型感知规则,则需要手动禁用这些规则或使用它们提供的预制配置来禁用它们。

eslint.config.js
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
{
languageOptions: {
parserOptions: {
project: true,
tsconfigDirName: import.meta.dirname,
},
},
},
{
files: ['**/*.js'],
...tseslint.configs.disableTypeChecked,
},
);
警告

此配置在语义版本控制 (semver) 下不被认为是“稳定的”。其启用的规则或其选项可能会在主要版本更新之外发生更改。

此规则集旨在用于扩展 eslint:recommended 之后。它禁用了 TypeScript 编译器已经检查过的核心 ESLint 规则。此外,它启用了促进使用 TypeScript 允许的更现代结构的规则。

eslint.config.js
export default tseslint.config(
eslint.configs.recommended,
tseslint.configs.eslintRecommended,
);

如果您使用任何推荐的配置,此配置将自动包含在内。

查看 configs/eslint-recommended.ts 以获取此配置的具体内容。

recommended 的一个版本,它包含类型检查规则,并禁用任何相应的核心 ESLint 规则。此配置加上 recommended 等同于 recommended-type-checked

.eslintrc.js
module.exports = {
extends: ['plugin:@typescript-eslint/recommended-type-checked-only'],
};

查看 configs/recommended-type-checked-only.ts 以获取此配置的具体内容。

strict-type-checked-only

strict 的一个版本,它包含类型检查规则,并禁用任何相应的核心 ESLint 规则。此配置加上 strict 等同于 strict-type-checked

.eslintrc.js
module.exports = {
extends: ['plugin:@typescript-eslint/strict-type-checked-only'],
};

查看 configs/strict-type-checked-only.ts 以获取此配置的具体内容。

警告

此配置在语义版本控制 (semver) 下不被认为是“稳定的”。其启用的规则或其选项可能会在主要版本更新之外发生更改。

stylistic-type-checked-only

stylistic 的一个版本,它包含类型检查规则,并禁用任何相应的核心 ESLint 规则。此配置加上 stylistic 等同于 stylistic-type-checked

.eslintrc.js
module.exports = {
extends: ['plugin:@typescript-eslint/stylistic-type-checked-only'],
};

查看 configs/stylistic-type-checked-only.ts 以获取此配置的具体内容。

建议配置更改

如果您强烈认为某个特定规则应该(或不应该)是这些配置之一,请 提交问题,并附上详细的论据解释您的理由。

格式化

typescript-eslint 提供的预设配置中没有启用格式化规则(仅用于强制执行代码空格和其他琐碎事物的规则)。我们强烈建议您使用 Prettier 或等效工具来格式化您的代码,而不是 ESLint 格式化规则。查看 关于格式化?> 建议用法