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 theRecord
type. 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