JS.TS.NO.EMPTY.FUNCTION

Disallow empty functions

Rule Details

This rule extends the base eslint/no-empty-function (https://eslint.org/docs/rules/no-empty-function) rule. It adds support for handling TypeScript specific code that would otherwise trigger the rule.

One example of valid TypeScript specific code that would otherwise trigger the no-empty-function rule is the use of parameter properties (https://www.typescriptlang.org/docs/handbook/classes.html#parameter-properties) in constructor functions.

How to Use

Copy
{
  // note you must disable the base rule as it can report incorrect errors
  "no-empty-function": "off",
  "@typescript-eslint/no-empty-function": ["error"]
}

Options

See eslint/no-empty-function options (https://eslint.org/docs/rules/no-empty-function#options). This rule adds the following options:

Copy
type AdditionalAllowOptionEntries =
  | 'private-constructors'
  | 'protected-constructors'
  | 'decoratedFunctions'
  | 'overrideMethods';

type AllowOptionEntries =
  | BaseNoEmptyFunctionAllowOptionEntries
  | AdditionalAllowOptionEntries;

interface Options extends BaseNoEmptyFunctionOptions {
  allow?: Array<AllowOptionEntries>;
}
const defaultOptions: Options = {
  ...baseNoEmptyFunctionDefaultOptions,
  allow: [],
};

allow: private-constructors

Examples of correct code for the { "allow": ["private-constructors"] } option:

Copy
class Foo {
  private constructor() {}
}

allow: protected-constructors

Examples of correct code for the { "allow": ["protected-constructors"] } option:

Copy
class Foo {
  protected constructor() {}
}

allow: decoratedFunctions

Examples of correct code for the { "allow": ["decoratedFunctions"] } option:

Copy
@decorator()
function foo() {}

class Foo {
  @decorator()
  foo() {}
}

allow: overrideMethods

Examples of correct code for the { "allow": ["overrideMethods"] } option:

Copy
abstract class Base {
  protected greet(): void {
    console.log('Hello!');
  }
}

class Foo extends Base {
  protected override greet(): void {}
}

How to Use

Copy
{
  // note you must disable the base rule as it can report incorrect errors
  "no-empty-function": "off",
  "@typescript-eslint/no-empty-function": ["error"]
}

The content on this page is adapted from the ESLint User Guide. Copyright © OpenJS Foundation and other contributors, www.openjsf.org. All rights reserved. https://eslint.org/docs/rules/