メインコンテンツにスキップ

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;
};
プレイグラウンドで開く

index-signature

type Foo = Record<string, unknown>;
プレイグラウンドで開く

使用しない場合

このルールは、プロジェクトの整合性を維持するための純粋にスタイルに関するルールです。インデックス付きオブジェクト型のスタイルを一貫させる必要がない場合は、無効にすることができます。

ただし、スタイルの不一致はプロジェクトの可読性を損なう可能性があることに注意してください。プロジェクトに最適なオプションを1つ選択することをお勧めします。

リソース