Dev Study
← 解説「rest引数 — 個数が決まらない引数を受け取る」に戻る

サンプルコードで身につける: rest引数 — 個数が決まらない引数を受け取る

解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。

1個数が決まらない数値を合計する

rest引数の最も基本の形です。...values と書くだけで、呼び出しごとに違う個数の引数をまとめて受け取れ、関数の中では普通の配列として扱えます。引数が2個でも3個でも同じ関数で済む、というのがすべての出発点です。

TypeScript

2固定の引数とrest引数を組み合わせる

最初の引数は普通に受け取り、それ以降だけを rest引数でまとめる形です。rest引数は必ず引数リストの最後に置く、というルールもここで確認できます。「共通の設定1つ + 対象データたくさん」という実務の関数でよく出てくる並びです。

TypeScript

3spread構文で配列をrest引数に渡す

受け取る側の rest引数と、渡す側の spread構文(配列の前に ...)は対になる関係です。すでに配列になっているデータを、要素を1個ずつ書き直さずにそのまま rest引数の関数へ渡せます。Math.max のような組み込み関数にも同じ渡し方が使えます。

TypeScript

4引数0個の呼び出しに備える

rest引数は0個の呼び出しも合法で、そのときは空の配列になります。平均のように個数で割る計算では、空のまま計算すると壊れるので length の確認が必要です。「restは常に配列。ただし空かもしれない」という性質を確かめる例です。

TypeScript

5可変個の詳細を持つログ行を組み立てる

実務のログ出力では、エラーの内容・リトライ回数・担当チームなど、付けたい詳細情報の数が場面ごとに変わります。レベルは固定の引数、詳細は rest引数で受けて join でつなげば、どんな個数でも1つの関数で整形できます。

TypeScript