There are two ways to define a type.
// type alias
type T1 = {
a: string,
b: number,
};
// interface
interface T2 {
a: string;
b: number;
}
Examples of incorrect code with interface
option.
type T = { x: number };
Examples of correct code with interface
option.
type T = string;
type Foo = string | {};
interface T {
x: number;
}
Examples of incorrect code with type
option.
interface T {
x: number;
}
Examples of correct code with type
option.
type T = { x: number };
This rule has two options:
{
// Consistent with type definition by `interface`
"@typescript-eslint/consistent-type-definitions": ["error", "interface"]
}
Or for tabbed indentation:
{
// Consistent with type definition by `type`
"@typescript-eslint/consistent-type-definitions": ["error", "type"]
}
If you specifically want to use an interface or type literal for stylistic reasons, you can disable this rule.
- TSLint: interface-over-type-literal