Enforce or disallow the use of the record type (consistent-indexed-object-style)
TypeScript supports defining object show keys can be flexible using an index signature. TypeScript also has a builtin type named Record to create an empty object defining only an index signature. For example, the following types are equal:
interface Foo {
  [key: string]: unknown;
}
type Foo = {
  [key: string]: unknown;
};
type Foo = Record<string, unknown>;
Options
"record": Set to"record"to only allow theRecordtype. Set to"index-signature"to only allow index signatures. (Defaults to"record")
For example:
{
  "@typescript-eslint/consistent-indexed-object-style": [
    "error",
    "index-signature"
  ]
}
Rule details
This rule enforces a consistent way to define records.
record
Examples of code with record option.
- โ Incorrect
 - โ Correct
 
interface Foo {
  [key: string]: unknown;
}
type Foo = {
  [key: string]: unknown;
};
type Foo = Record<string, unknown>;
index-signature
Examples of code with index-signature option.
- โ Incorrect
 - โ Correct
 
type Foo = Record<string, unknown>;
interface Foo {
  [key: string]: unknown;
}
type Foo = {
  [key: string]: unknown;
};
Attributes
- โ Recommended
 - ๐ง Fixable
 - ๐ญ Requires type information