はじめに
この記事は【オーバーロード関数 (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(",")}`);
}
}
コメント