Skip to main content

Configurations

ESLint shareable configurations exist to provide a comprehensive base config for you, with the intention that you add the config and it gives you an opinionated setup.

Built-In Configurations

@typescript-eslint/eslint-plugin includes built-in configurations you can extend from to pull in the recommended starting rules.

With the exception of strict, all configurations are considered "stable". Rule additions and removals are treated as breaking changes and will only be done in major version bumps.

note

We recommend most packages extend from recommended-requiring-type-checking (which requires typed linting).

This ruleset is meant to be used after extending eslint:recommended. It disables core ESLint rules that are already checked by the TypeScript compiler. Additionally, it enables rules that promote using the more modern constructs TypeScript allows for.

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

This config is automatically included if you use any of the other configurations mentioned on this page.

Recommended rules for code correctness that you can drop in without additional configuration. These rules are those whose reports are almost always for a bad practice and/or likely bug. recommended also disables rules known to conflict with this repository, or cause issues in TypeScript codebases.

{
"extends": ["plugin:@typescript-eslint/recommended"]
}
tip

We strongly recommend all TypeScript projects extend from this configuration.

Additional recommended rules that require type information. Rules in this configuration are similarly useful to those in recommended.

{
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking"
]
}
tip

We recommend all TypeScript projects extend from this configuration, with the caveat that rules using type information take longer to run. See Linting with Type Information for more details.

strict

Additional strict rules that can also catch bugs but are more opinionated than recommended rules.

{
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:@typescript-eslint/strict"
]
}
tip

We recommend a TypeScript project extend from this configuration only if a nontrivial percentage of its developers are highly proficient in TypeScript.

Overriding Configurations

These configurations are our recommended starting points, but you don't need to use them as-is. ESLint allows you to configure your own rule settings on top of any extended configurations. See ESLint's Configuring Rules docs.

Suggesting Configuration Changes

If you feel strongly that a specific rule should (or should not) be one of these configurations, please file an issue along with a detailed argument explaining your reasoning.

Prettier

If you use prettier, there is also a helpful config to help ensure ESLint doesn't report on formatting issues that prettier will fix: eslint-config-prettier.

Using this config by adding it to the end of your extends:

.eslintrc.js
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'prettier',
],
};
danger

We strongly recommend you use Prettier or an equivalent, not ESLint formatting rules. See this issue for more information.