本文へスキップ

unified-signatures

ユニオン型またはオプション/レストパラメータを使用して1つに統合できる2つのオーバーロードを禁止します。

🔒

拡張 "plugin:@typescript-eslint/strict" ESLint設定 で有効にすると、このルールが有効になります。

関数オーバーロードシグネチャは、非常に異なる複数の方法で呼び出すことができる関数を定義するTypeScriptの方法です。オーバーロードシグネチャは構文と理論的な肥大化を追加するため、可能であれば使用を避けるのが一般的です。ユニオン型と/またはオプションパラメータまたはレストパラメータに切り替えることで、多くの場合、オーバーロードシグネチャの必要性を回避できます。

このルールは、関数オーバーロードシグネチャを単一の関数シグネチャで置き換えることができる場合に報告します。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/unified-signatures": "error"
}
};

Playgroundでこのルールを試す ↗

function x(x: number): void;
function x(x: string): void;
Playgroundで開く
function y(): void;
function y(...x: number[]): void;
Playgroundで開く

オプション

このルールは次のオプションを受け入れます。

type Options = [
{
/** Whether two parameters with different names at the same index should be considered different even if their types are the same. */
ignoreDifferentlyNamedParameters?: boolean;
},
];

const defaultOptions: Options = [{ ignoreDifferentlyNamedParameters: false }];

ignoreDifferentlyNamedParameters

ignoreDifferentlyNamedParametersを使用したこのルールのコード例

function f(a: number): void;
function f(a: string): void;
Playgroundで開く

使用しない場合

これは、関数シグネチャオーバーロードの可読性を向上させるための純粋にスタイルに関するルールです。それらを常に互いに隣接させて統合することを望まない場合は、オフにすることができます。

リソース