Skip to content

Latest commit

 

History

History
73 lines (49 loc) · 1.72 KB

no-empty-interface.mdx

File metadata and controls

73 lines (49 loc) · 1.72 KB
description
Disallow the declaration of empty interfaces.

import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';

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

See https://typescript-eslint.io/rules/no-empty-interface for documentation.

:::danger Deprecated

This rule has been deprecated in favour of the more comprehensive @typescript-eslint/no-empty-object-type rule.

:::

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.

This rule aims to ensure that only meaningful interfaces are declared in the code.

Examples

// an empty interface
interface Foo {}

// an interface with only one supertype (Bar === Foo)
interface Bar extends Foo {}

// an interface with an empty list of supertypes
interface Baz {}
// an interface with any number of members
interface Foo {
  name: string;
}

// same as above
interface Bar {
  age: number;
}

// an interface with more than one supertype
// in this case the interface can be used as a replacement of an intersection type.
interface Baz extends Foo, Bar {}

Options

allowSingleExtends

allowSingleExtends: true will silence warnings about extending a single interface without adding additional members

When Not To Use It

If you don't care about having empty/meaningless interfaces, then you will not need this rule.

Related To