Consistent with type definition either interface or type (consistent-type-definitions)
There are two ways to define a type.
// type alias
type T1 = {
  a: string;
  b: number;
};
// interface keyword
interface T2 {
  a: string;
  b: number;
}
Options
This rule accepts one string option:
"interface": enforce usinginterfaces for object type definitions."type": enforce usingtypes for object type definitions.
For example:
{
  // Use type for object definitions
  "@typescript-eslint/consistent-type-definitions": ["error", "type"]
}
interface
Examples of code with interface option.
- โ Incorrect
 - โ Correct
 
type T = { x: number };
type T = string;
type Foo = string | {};
interface T {
  x: number;
}
type
Examples of code with type option.
- โ Incorrect
 - โ Correct
 
interface T {
  x: number;
}
type T = { x: number };
When Not To Use It
If you specifically want to use an interface or type literal for stylistic reasons, you can disable this rule.
Compatibility
- TSLint: interface-over-type-literal
 
Attributes
- โ Recommended
 - ๐ง Fixable
 - ๐ญ Requires type information