consistent-indexed-object-style
Record
型を必須にするか、許可しないかを設定します。
🎨
拡張 "plugin:@typescript-eslint/"stylistic"
を ESLint 設定 に追加することで、このルールが有効になります。
🔧
このルールによって報告されるいくつかの問題は、 --fix
ESLint コマンドラインオプション.
によって自動的に修正できます。TypeScript は、インデックスシグネチャを使用して任意のオブジェクトキーを定義することをサポートしています。TypeScript には、インデックスシグネチャのみを定義する空のオブジェクトを作成するための組み込み型 Record
もあります。たとえば、次の型は等価です。
interface Foo {
[key: string]: unknown;
}
type Foo = {
[key: string]: unknown;
};
type Foo = Record<string, unknown>;
宣言形式を1つに統一することで、コードの可読性が向上します。
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/consistent-indexed-object-style": "error"
}
};
プレイグラウンドでこのルールを試す ↗
オプション
このルールは、以下のオプションを受け入れます。
type Options = ['index-signature' | 'record'];
const defaultOptions: Options = ['record'];
"record"
(デフォルト):Record
型のみを許可します。"index-signature"
: インデックスシグネチャのみを許可します。
record
- ❌ 間違い
- ✅ 正解
interface Foo {
[key: string]: unknown;
}
type Foo = {
[key: string]: unknown;
};
プレイグラウンドで開くtype Foo = Record<string, unknown>;
プレイグラウンドで開くindex-signature
- ❌ 間違い
- ✅ 正解
type Foo = Record<string, unknown>;
プレイグラウンドで開くinterface Foo {
[key: string]: unknown;
}
type Foo = {
[key: string]: unknown;
};
プレイグラウンドで開く使用しない場合
このルールは、プロジェクトの整合性を維持するための純粋にスタイルに関するルールです。インデックス付きオブジェクト型のスタイルを一貫させる必要がない場合は、無効にすることができます。
ただし、スタイルの不一致はプロジェクトの可読性を損なう可能性があることに注意してください。プロジェクトに最適なオプションを1つ選択することをお勧めします。