メインコンテンツへスキップ

no-empty-function

空の関数を許可しません。

🎨

拡張 "plugin:@typescript-eslint/stylistic" 内の ESLint設定 は、このルールを有効にします。

このルールは、ベースとなるeslint/no-empty-functionルールを拡張します。このルールは、そうでない場合にルールをトリガーするTypeScript固有のコードの処理をサポートします。

no-empty-functionルールをトリガーする可能性のある有効なTypeScript固有のコードの1つの例は、コンストラクター関数でのパラメータープロパティの使用です。

使用方法

.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"
}
};

プレイグラウンドでこのルールを試す ↗

オプション

eslint/no-empty-function のオプションを参照してください。

このルールは次のオプションを追加します

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

{ "allow": ["private-constructors"] } オプションの正しいコードの例

class Foo {
private constructor() {}
}
プレイグラウンドで開く

allow: protected-constructors

{ "allow": ["protected-constructors"] } オプションの正しいコードの例

class Foo {
protected constructor() {}
}
プレイグラウンドで開く

allow: decoratedFunctions

{ "allow": ["decoratedFunctions"] } オプションの正しいコードの例

class Foo {
@decorator()
foo() {}
}
プレイグラウンドで開く

allow: overrideMethods

{ "allow": ["overrideMethods"] } オプションの正しいコードの例

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

class Foo extends Base {
protected override greet(): void {}
}
プレイグラウンドで開く

使用しない場合

何も処理しない場合でも関数を必要とする外部APIを使用している場合は、このルールを回避したい場合があります。このルールを完全に無効にする代わりに、特定の状況に対してESLintの無効化コメントを使用することを検討できます。

テストコードもこのルールに違反することがよくあります。テスト設定がjest.fn()sinon.spy()vi.fn()などの「モック」または「スパイ」関数をサポートしていない場合は、テストファイルでこのルールを無効にすることができます。繰り返しますが、それらのケースがそれほど一般的でない場合は、テストファイルでこのルールを完全に無効にする代わりに、特定の状況に対してESLintの無効化コメントを使用することを検討できます。

リソース

ESLint coreから❤️を込めて引用。