adjacent-overload-signatures
要求函數重載簽名連續出現。
🎨
擴充套件 "plugin:@typescript-eslint/風格化"
在 ESLint 組態 中啟用此規則。
函數重載簽名表示函數可以被呼叫的各種方式,甚至可以有不同的回傳值類型。當描述函數的介面或型別別名會將所有重載簽名放在一起。若簽名的位置出現在型別的其他地方,未來開發人員閱讀程式碼時較容易遺漏。
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/adjacent-overload-signatures": "error"
}
};
在遊樂場測試此規則 ↗
範例
- ❌ 錯誤
- ✅ 正確
declare namespace Foo {
export function foo(s: string): void;
export function foo(n: number): void;
export function bar(): void;
export function foo(sn: string | number): void;
}
type Foo = {
foo(s: string): void;
foo(n: number): void;
bar(): void;
foo(sn: string | number): void;
};
interface Foo {
foo(s: string): void;
foo(n: number): void;
bar(): void;
foo(sn: string | number): void;
}
class Foo {
foo(s: string): void;
foo(n: number): void;
bar(): void {}
foo(sn: string | number): void {}
}
export function foo(s: string): void;
export function foo(n: number): void;
export function bar(): void;
export function foo(sn: string | number): void;
在遊樂場中開啟declare namespace Foo {
export function foo(s: string): void;
export function foo(n: number): void;
export function foo(sn: string | number): void;
export function bar(): void;
}
type Foo = {
foo(s: string): void;
foo(n: number): void;
foo(sn: string | number): void;
bar(): void;
};
interface Foo {
foo(s: string): void;
foo(n: number): void;
foo(sn: string | number): void;
bar(): void;
}
class Foo {
foo(s: string): void;
foo(n: number): void;
foo(sn: string | number): void {}
bar(): void {}
}
export function bar(): void;
export function foo(s: string): void;
export function foo(n: number): void;
export function foo(sn: string | number): void;
在遊樂場中開啟選項
此規則不可設定。
何時不應使用它
有時將超載函數宣告放在類型其他有意義的部分之旁邊會很有用。舉例來說,如果函數的每個超載函數宣言對應到不同的屬性,你可能會希望將每個超載函數放在它對應的屬性之旁邊。你可以考慮使用 ESLint 禁止注解 來處理特定情況,而不用完全停用此規則。