跳至主要内容

统一签名

禁止两个可以合并为一个的重载,可以使用联合类型或可选/剩余参数。

🔒

"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 中打开

何时不使用它

这纯粹是一个风格规则,有助于提高函数签名重载的可读性。如果你不想始终将它们放在一起并统一,可以关闭它。

资源