consistent-type-definitions
型定義に
interface
またはtype
のいずれかを一貫して使用することを強制します。
🎨
拡張 "plugin:@typescript-eslint/stylistic"
を ESLint設定 で有効にすると、このルールが有効になります。
🔧
このルールで報告された問題の一部は、 --fix
ESLintコマンドラインオプション.
で自動的に修正できます。
// type alias
type T1 = {
a: string;
b: number;
};
// interface keyword
interface T2 {
a: string;
b: number;
}
TypeScriptには、オブジェクト型を定義する一般的な方法が2つあります。interface
とtype
です。
この2つは一般的に非常に似ており、しばしば交換可能です。同じ型宣言スタイルを一貫して使用すると、コードの可読性が向上します。
module.exports = {
"rules": {
"@typescript-eslint/consistent-type-definitions": "error"
}
};
.eslintrc.cjs
プレイグラウンドでこのルールを試す↗
オプション
type Options = ['interface' | 'type'];
const defaultOptions: Options = ['interface'];
- このルールは、次のオプションを受け入れます。
"interface"
(デフォルト): オブジェクト型定義にinterface
を使用することを強制します。
"type"
: オブジェクト型定義に type
を使用することを強制します。
interface
- ❌ 不正
プレイグラウンドで開く
type
使用しない場合
スタイル上の理由で、インターフェースまたは型リテラルを具体的に使用したい場合は、このルールを回避できます。
ただし、スタイルが不整合だとプロジェクトの可読性を損なう可能性があることに注意してください。プロジェクトに最適なこのルールのオプションを1つ選択することをお勧めします。