共享配置
ESLint 可共享配置 提供了一份全面的规则设置列表,您可以从这些设置开始。@typescript-eslint/eslint-plugin
包含内置的配置,您可以从这些配置扩展以引入推荐的初始规则。
除了
all
、strict
和strict-type-checked
之外,所有配置都被认为是“稳定的”。规则的添加和删除将被视为重大变更,并且只会发生在主版本升级中。
入门
首先,请参阅入门 > 快速入门,以设置您的 ESLint 配置文件。 包 > typescript-eslint 包含有关tseslint
帮助程序的更多文档。
没有类型检查的项目
如果您的项目没有启用类型化代码风格检查,我们建议您启用recommended
和stylistic
配置来开始
- 扁平化配置
- 传统配置
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommended,
...tseslint.configs.stylistic,
);
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/stylistic',
],
};
如果大多数参与您项目开发的开发人员熟悉 TypeScript 和 typescript-eslint,可以考虑将
recommended
替换为strict
。
带有类型检查的项目
如果您的项目启用了类型化代码风格检查,我们建议您启用recommended-type-checked
和stylistic-type-checked
配置来开始
- 扁平化配置
- 传统配置
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
...tseslint.configs.stylisticTypeChecked,
);
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended-type-checked',
'plugin:@typescript-eslint/stylistic-type-checked',
],
};
如果大多数参与您项目开发的开发人员熟悉 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
推荐的代码正确性规则,您可以直接使用,无需额外配置。这些规则的报告几乎总是针对不良实践和/或潜在的错误。recommended
还禁用了已知与 typescript-eslint 规则冲突或在 TypeScript 代码库中导致问题的核心 ESLint 规则。
- 扁平化配置
- 传统配置
export default tseslint.config(...tseslint.configs.recommended);
module.exports = {
extends: ['plugin:@typescript-eslint/recommended'],
};
查看 configs/recommended.ts
以获取此配置的完整内容。
recommended-type-checked
包含所有 recommended
以及需要类型信息的额外推荐规则。此配置中新添加的规则与 recommended
中的规则类似,同样有用。
- 扁平化配置
- 传统配置
export default tseslint.config(...tseslint.configs.recommendedTypeChecked);
module.exports = {
extends: ['plugin:@typescript-eslint/recommended-type-checked'],
};
查看 configs/recommended-type-checked.ts
以获取此配置的完整内容。
strict
包含所有 recommended
,以及可以捕获错误的额外严格规则。strict
中添加的规则比推荐规则更具主观性,可能不适用于所有项目。
- 扁平化配置
- 传统配置
export default tseslint.config(...tseslint.configs.strict);
module.exports = {
extends: ['plugin:@typescript-eslint/strict'],
};
此配置中,一些在 recommended
中启用的规则默认使用更严格的设置。查看 configs/strict.ts
以获取此配置的完整内容。
我们建议 TypeScript 项目仅在相当一部分开发者精通 TypeScript 的情况下才从 plugin:@typescript-eslint/strict
扩展。
此配置在语义版本控制 (semver) 下不被认为是“稳定的”。其启用的规则或其选项可能会在主要版本更新之外发生更改。
strict-type-checked
包含所有 recommended
、recommended-type-checked
和 strict
,以及需要类型信息的额外严格规则。在此配置中新添加的规则与 strict
中的规则类似,既有用(也带有主观意见)。
- 扁平化配置
- 传统配置
export default tseslint.config(...tseslint.configs.strictTypeChecked);
module.exports = {
extends: ['plugin:@typescript-eslint/strict-type-checked'],
};
在 recommended-type-checked
中启用的某些规则在此配置中默认设置为更严格的设置。有关此配置的准确内容,请参阅 configs/strict-type-checked.ts
。
我们建议 TypeScript 项目仅在相当一部分开发人员精通 TypeScript 的情况下,才从 plugin:@typescript-eslint/strict-type-checked
继承。
此配置在语义版本控制 (semver) 下不被认为是“稳定的”。其启用的规则或其选项可能会在主要版本更新之外发生更改。
stylistic
被认为是现代 TypeScript 代码库最佳实践的规则,但不会影响程序逻辑。这些规则通常对强制执行更简单的代码模式持主观意见。
- 扁平化配置
- 传统配置
export default tseslint.config(...tseslint.configs.stylistic);
module.exports = {
extends: ['plugin:@typescript-eslint/stylistic'],
};
请注意,stylistic
不会替代 recommended
或 strict
。stylistic
添加了额外的规则。
有关此配置的准确内容,请参阅 configs/stylistic.ts
。
stylistic-type-checked
包含所有 stylistic
,以及需要类型信息的额外风格规则。在此配置中新添加的规则与 stylistic
中的规则类似,带有主观意见。
- 扁平化配置
- 传统配置
export default tseslint.config(...tseslint.configs.stylisticTypeChecked);
module.exports = {
extends: ['plugin:@typescript-eslint/stylistic-type-checked'],
};
请注意,stylistic-type-checked
不会替代 recommended-type-checked
或 strict-type-checked
。stylistic-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
。
如果您使用来自其他插件的类型感知规则,则需要手动禁用这些规则或使用它们提供的预制配置来禁用它们。
- 扁平化配置
- 传统配置
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
{
languageOptions: {
parserOptions: {
project: true,
tsconfigDirName: import.meta.dirname,
},
},
},
{
files: ['**/*.js'],
...tseslint.configs.disableTypeChecked,
},
);
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended-type-checked',
],
parser: '@typescript-eslint',
parserOptions: {
project: true,
__tsconfigRootDir: __dirname,
},
root: true,
overrides: [
{
files: ['**/*.js'],
extends: ['plugin:@typescript-eslint/disable-type-checked'],
},
],
};
此配置在语义版本控制 (semver) 下不被认为是“稳定的”。其启用的规则或其选项可能会在主要版本更新之外发生更改。
eslint-recommended
此规则集旨在用于扩展 eslint:recommended
之后。它禁用了 TypeScript 编译器已经检查过的核心 ESLint 规则。此外,它启用了促进使用 TypeScript 允许的更现代结构的规则。
- 扁平化配置
- 传统配置
export default tseslint.config(
eslint.configs.recommended,
tseslint.configs.eslintRecommended,
);
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
],
};
如果您使用任何推荐的配置,此配置将自动包含在内。
查看 configs/eslint-recommended.ts
以获取此配置的具体内容。
recommended-type-checked-only
recommended
的一个版本,它仅包含类型检查规则,并禁用任何相应的核心 ESLint 规则。此配置加上 recommended
等同于 recommended-type-checked
。
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
。
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
。
module.exports = {
extends: ['plugin:@typescript-eslint/stylistic-type-checked-only'],
};
查看 configs/stylistic-type-checked-only.ts
以获取此配置的具体内容。
建议配置更改
如果您强烈认为某个特定规则应该(或不应该)是这些配置之一,请 提交问题,并附上详细的论据解释您的理由。
格式化
typescript-eslint 提供的预设配置中没有启用格式化规则(仅用于强制执行代码空格和其他琐碎事物的规则)。我们强烈建议您使用 Prettier 或等效工具来格式化您的代码,而不是 ESLint 格式化规则。查看 关于格式化?> 建议用法。