【TypeScript】【オーバーロード関数 (overload function)】について

はじめに

この記事は【オーバーロード関数 (overload function)】についての備忘録である。

【オーバーロード関数 (overload function)】とは

  • ひとつの関数に異なる関数シグネチャを複数もつ関数である
  • 関数シグネチャとは、どのような引数を取るか、どのような戻り値を返すかといった関数の型のこと
  • 異なる引数や戻り値のパターンがいくつかある関数をオーバーロード関数と言う
  • 関数宣言の関数の書き方でした使用できない(アロー関数などでは使用できない)

オーバーロード関数の文法

  • 関数シグネチャの部分は、オーバーロードのパターン数だけ複数書く
    • この部分はインターフェースを定義するところなので、関数のボディは書けない
  • 関数の実装部分は、オーバーロードの全パターンを網羅する関数を書く
    • ありうる引数の数や型のパターンを網羅したものになる
    • ロジックも分岐などを用いて、パターンごとの処理を書く必要がある
// 関数シグネチャ部分
function hello(person: string): void; // シグネチャ1
function hello(persons: string[]): void; // シグネチャ2
// 関数の実装部分
function hello(person: string | string[]): void {
  if (typeof person === "string") {
    console.log(`Hello ${person}`);
  } else {
    console.log(`Hello ${person.join(",")}`);
  }
}

コメント

タイトルとURLをコピーしました