共有設定
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プロジェクトがplugin:@typescript-eslint/strict
から拡張するのは、開発者のかなりの割合がTypeScriptに精通している場合のみにすることをお勧めします。
この設定は、セマンティックバージョニング(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プロジェクトが`plugin:@typescript-eslint/strict-type-checked`から拡張するのは、開発者のかなりの割合がTypeScriptに精通している場合のみにすることをお勧めします。
この設定は、セマンティックバージョニング(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
を参照してください。
他のプラグインの型認識ルールを使用している場合は、これらのルールを手動で無効にするか、それらを無効にするための既製のconfigを使用する必要があります。
- フラット設定
- レガシー設定
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
型チェックされたルールのみを含み、対応するコアESLintルールを無効にするrecommended
のバージョンです。この設定とrecommended
を組み合わせると、recommended-type-checked
と同等です。
module.exports = {
extends: ['plugin:@typescript-eslint/recommended-type-checked-only'],
};
この設定の正確な内容については、configs/recommended-type-checked-only.ts
を参照してください。
strict-type-checked-only
型チェックされたルールのみを含み、対応するコアESLintルールを無効にするstrict
のバージョンです。この設定と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
型チェックされたルールのみを含み、対応するコアESLintルールを無効にするstylistic
のバージョンです。この設定とstylistic
を組み合わせると、stylistic-type-checked
と同等です。
module.exports = {
extends: ['plugin:@typescript-eslint/stylistic-type-checked-only'],
};
この設定の正確な内容については、configs/stylistic-type-checked-only.ts
を参照してください。
設定変更の提案
特定のルールをこれらの設定に含める(または含めない)べきだと強く感じている場合は、**詳細な**根拠を説明する議論とともに issueを提出してください。
フォーマット
typescript-eslintによって提供されるプリセット設定では、フォーマットルール(コードの空白やその他のトリビアを強制するためのルール)は有効になりません。ESLintのフォーマットルールではなく、Prettierまたは同等のものを使用してコードをフォーマットすることを強くお勧めします。フォーマットについてはどうですか? > 推奨される使用方法を参照してください。