Skip to main content

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;


This rule accepts one string option:

  • "interface": enforce using interfaces for object type definitions.
  • "type": enforce using types for object type definitions.

For example:

// Use type for object definitions
"@typescript-eslint/consistent-type-definitions": ["error", "type"]


Examples of code with interface option.

type T = { x: number };


Examples of code with type option.

interface 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.


  • โœ… Recommended
  • ๐Ÿ”ง Fixable
  • ๐Ÿ’ญ Requires type information