Skip to content
← Back to rules

typescript/隣接するオーバーロードシグネチャ スタイル

An auto-fix is available for this rule.

何をするのか

関数のオーバーロードシグネチャが連続して配置されることを要求する。

なぜ問題なのか

関数のオーバーロードシグネチャは、関数が呼び出される可能性のある複数の方法(場合によっては異なる戻り値型を伴う)を表す。関数を記述するインターフェースや型エイリアスにおいて、すべてのオーバーロードシグネチャを隣接させて配置することが一般的である。もしシグネチャが型の他の場所に分散されていると、将来コードを読む開発者が見落としやすくなる。

このルールに違反する誤ったコードの例:

typescript
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;

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、以下のいずれかを使用できます:

json
{
  "rules": {
    "typescript/隣接するオーバーロードシグネチャ": "error"
  }
}
bash
oxlint --deny typescript/隣接するオーバーロードシグネチャ

参照