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.
Examples of incorrect code with record option.
interface Foo {
[key: string]: unknown;
}
type Foo = {
[key: string]: unknown;
};
Examples of correct code with record option.
type Foo = Record<string, unknown>;
Examples of incorrect code with index-signature option.
type Foo = Record<string, unknown>;
Examples of correct code with index-signature option.
interface Foo {
[key: string]: unknown;
}
type Foo = {
[key: string]: unknown;
};
Attributes
- โ Recommended
- ๐ง Fixable
- ๐ญ Requires type information