# @typescript-eslint/no-empty-interface

> Disallow interfaces that declare no members

An interface with no members checks almost nothing. `interface Options {}` accepts every value except `null` and `undefined`, the same as `{}`. An empty interface that extends one other type is only a second name for that type.

An empty interface that extends two or more types isn't reported, because it combines them.

`--fix` rewrites an empty interface that extends one type to a type alias.

This rule is deprecated. Use `@typescript-eslint/no-empty-object-type` instead. It reports the same interfaces, and the `{}` type too.

## Examples

Reported:

{/* bad {"count": 2} */}
```ts
interface Options {}

interface User {
  name: string;
}

interface Admin extends User {}
```

Not reported:

{/* good */}
```ts
interface User {
  name: string;
}

interface Timestamps {
  createdAt: Date;
}

type Admin = User;

interface StoredUser extends User, Timestamps {}
```

## Options

| Option | Default | What it does |
| --- | --- | --- |
| `allowSingleExtends` | `false` | Allow an empty interface that extends one type. |

{/* good {"options": [{"allowSingleExtends": true}]} */}
```ts
interface User {
  name: string;
}

interface Admin extends User {}
```
