consistent-indexed-object-style
Enforce or disallow the use of the record type.
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