noEmptyInterface (since v1.0.0)
Diagnostic Category: lint/suspicious/noEmptyInterface
Inspired from: no-empty-interface
Disallow 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 {}
suspicious/noEmptyInterface.js: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 {}