noEmptyInterface
Diagnostic Category: lint/suspicious/noEmptyInterface
Since: v1.0.0
Sources:
- Inspired from: @typescript-eslint/no-empty-interface
Description
Section titled DescriptionDisallow the declaration of empty interfaces.
An empty interface in TypeScript does very little: any non-nullable value is assignable to {}.
Using an empty interface is often a sign of programmer error, such as misunderstanding the concept of {} or forgetting to fill in fields.
The rule ignores empty interfaces that extends one or multiple types.
Examples
Section titled ExamplesInvalid
Section titled Invalidinterface A {}code-block.ts:1:1 lint/suspicious/noEmptyInterface  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ✖ An empty interface is equivalent to {}.
  
  > 1 │ interface A {}
      │ ^^^^^^^^^^^^^^
    2 │ 
  
  ℹ Safe fix: Use a type alias instead.
  
    1   │ - interface·A·{}
      1 │ + type·A·=·{}
    2 2 │   
  
Valid
Section titled Validinterface A {  prop: string;}
// Allow empty interfaces that extend a type.interface B extends A {}
// Allow empty interfaces in ambient modulesdeclare module "mod" {  interface C {}}How to configure
Section titled How to configure{  "linter": {    "rules": {      "suspicious": {        "noEmptyInterface": "error"      }    }  }}