本文へ移動

prefer-function-type

コールシグネチャを持つインターフェースの代わりに、関数型を使用することを強制します。

🎨

拡張 "plugin:@typescript-eslint/スタイル" ESLint設定 で有効にすると、このルールが適用されます。

🔧

このルールによって報告される問題の一部は、 --fix ESLintコマンドラインオプション.

によって自動的に修正できます。TypeScriptでは、関数の型を宣言する一般的な方法が2つあります。

  • 関数型: () => string
  • シグネチャを持つオブジェクト型: { (): string }

関数型形式は、より簡潔であるため、可能な限り優先されます。

このルールは、単一のコールシグネチャを持つインターフェースまたはオブジェクト型リテラルの代わりに、関数型を使用することを提案します。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/prefer-function-type": "error"
}
};

Playgroundでこのルールを試してみてください ↗

interface Example {
(): string;
}
Playgroundで開く
function foo(example: { (): number }): number {
return example();
}
Playgroundで開く
interface ReturnsSelf {
// returns the function itself, not the `this` argument.
(arg: string): this;
}
Playgroundで開く

オプション

このルールは設定できません。

使用しない場合

スタイル上の理由から、単一のコールシグネチャを持つインターフェースまたは型リテラルを具体的に使用したい場合は、このルールを回避できます。

このルールには、`interface Function`などのグローバル拡張でトリガーされることが時々ある既知のエッジケースがあります。これらのエッジケースはまれであり、多くの場合、奇妙なコードの症状です。 インラインESLint無効化コメントを使用することをお勧めします。詳細は#454を参照してください。

リソース