Skip to content

Latest commit

 

History

History
86 lines (60 loc) · 1.27 KB

consistent-type-definitions.md

File metadata and controls

86 lines (60 loc) · 1.27 KB
description
Enforce type definitions to consistently use either `interface` or `type`.

🛑 This file is source code, not the primary documentation location! 🛑

See https://typescript-eslint.io/rules/consistent-type-definitions for documentation.

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 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"]
}

interface

Examples of code with interface option.

❌ Incorrect

type T = { x: number };

✅ Correct

type T = string;
type Foo = string | {};

interface T {
  x: number;
}

type

Examples of code with type option.

❌ Incorrect

interface T {
  x: number;
}

✅ Correct

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.