本文へスキップ
BecomeCoder

TypeScriptコース · 第2章 関数に型をつける · レッスン6

オプション引数とデフォルト引数

ブラウザで完結

導入

「渡しても渡さなくてもよい引数」を作りたいときがあります。引数名のうしろに ? を付けるオプション引数と、初期値を決めておくデフォルト引数を使います。

説明

? を付けた引数は省略できます。省略されると値は undefined になります。

function hello(name: string, title?: string): void {
  if (title) {
    console.log(name + title);
  } else {
    console.log(name + "さん");
  }
}
hello("太郎");            // 太郎さん
hello("花子", "先生");    // 花子先生

= 値 を書くと、省略時にその値が使われるデフォルト引数になります。

function price(base: number, tax: number = 0.1): number {
  return Math.round(base * (1 + tax));
}
console.log(price(1000));       // 1100(tax は 0.1)
console.log(price(1000, 0.08)); // 1080

オプション引数は「必須の引数のうしろ」に置くのがルールです。

やってみよう

hello("花子", "様") のように第2引数を変えて実行し、表示の変化を確かめましょう。

演習

multiply という関数を作ってください。数値 a と、省略すると 2 になるデフォルト引数 b を受け取り、a * b を返します。multiply(5) の結果を console.log() で表示しましょう。

ヒント1を見る

function multiply(a: number, b: number = 2): number { return a * b; } と書きます。

実際に動かしてみよう

下のエディタにTypeScriptを書いて「実行」を押すと、その場でJavaScriptに変換してブラウザ内で実行し、出力が表示されます。本文の例をそのまま試したり、型注釈を書き換えたりしてみましょう(console.log の結果が下に出ます。初回だけコンパイラの読み込みに少し時間がかかります)。

TypeScript — ブラウザ内で実行

TypeScriptコンパイラ(同梱)でTS→JSに変換してから実行する学習用環境を読み込みます(初回のみコンパイラの読み込みに少し時間がかかります)。
スクロールして表示された時点でも自動で読み込まれます。