Skip to main content

no-empty-function

Disallow empty functions.

Examples

This rule extends the base eslint/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 in constructor functions.

How to Use

.eslintrc.cjs
module.exports = {
"rules": {
// Note: you must disable the base rule as it can report incorrect errors
"no-empty-function": "off",
"@typescript-eslint/no-empty-function": "error"
}
};
Try this rule in the playground ↗

Options

See eslint/no-empty-function options.

This rule adds the following options:

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:

class Foo {
private constructor() {}
}

allow: protected-constructors

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

class Foo {
protected constructor() {}
}

allow: decoratedFunctions

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

@decorator()
function foo() {}

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

allow: overrideMethods

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

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

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

Resources

Taken with ❤️ from ESLint core