Menu
CoddyTech

引数のデフォルト値

CoddyのJavaScriptジャーニー「Introduction To TypeScript」セクションの一部。レッスン 26/73。

オプショナル引数を使用すると、値を渡すかどうかを選択できますが、デフォルト引数はこの概念をさらに進め、引数が渡されない場合にフォールバック値を自動的に提供します。これにより、型安全性を維持しながら、関数をより便利に使用できるようになります。

デフォルトパラメータを作成するには、等号(=)を使用して関数シグネチャ内で直接値を代入します。TypeScriptは、デフォルト値からパラメータの型を自動的に推論します。

function greet(name: string, greeting = "Hello"): string {
  return greeting + ", " + name;
}

function calculateArea(width: number, height = 10): number {
  return width * height;
}

これらの例では、greeting はデフォルトで "Hello" (string として推論されます) になり、height はデフォルトで 10 (number として推論されます) になります。greet("Alice") を呼び出すと、自動的にデフォルトの挨拶が使用されますが、greet("Alice", "Good morning") で上書きすることもできます。

デフォルト引数は実質的にオプションです。デフォルト値によってパラメータが常に値を持つことが保証されるため、? 構文を使用する必要はありません。適切なデフォルト値がある場合、このアプローチはオプションのパラメータよりも簡潔です。関数内で undefined をチェックする必要がなくなるためです。

challenge icon

チャレンジ

簡単

number型のprice(必須)と、デフォルト値が0.05であるnumber型のrateの2つのパラメータを受け取る、calculateTaxという名前の関数を作成してください。この関数は、明示的な戻り値の型注釈を付けて、税額を数値として返す必要があります。

この関数は、価格に税率を掛けて税額を計算する必要があります。

string型のname(必須)と、デフォルト値が"Hello"であるstring型のtimeOfDayの2つのパラメータを受け取る、formatGreetingという名前の別の関数を作成してください。この関数は、明示的な戻り値の型注釈を付けて、フォーマットされた挨拶文字列を返す必要があります。

この関数は、"[timeOfDay], [name]!"という形式で挨拶を返す必要があります。

number型のweight(必須)、number型のdistance(必須)、およびデフォルト値がfalseであるboolean型のexpeditedの3つのパラメータを受け取る、calculateShippingという名前の3つ目の関数を作成してください。この関数は、明示的な戻り値の型注釈を付けて、送料を数値として返す必要があります。

この関数は、次の式を使用して送料を計算する必要があります:(weight * 0.5) + (distance * 0.1)。もしexpeditedがtrueである場合は、結果を2倍してください。

以下の値で関数を呼び出し、結果を出力して関数をテストしてください:

  • 100を指定してcalculateTaxを呼び出す(デフォルトの税率を使用)
  • 200と0.08を指定してcalculateTaxを呼び出す
  • "Alice"を指定してformatGreetingを呼び出す(デフォルトの挨拶を使用)
  • "Bob"と"Good morning"を指定してformatGreetingを呼び出す
  • 5と100を指定してcalculateShippingを呼び出す(デフォルトの速達設定を使用)
  • 3、50、およびtrueを指定してcalculateShippingを呼び出す

各結果を、上記の順序で個別の行に出力してください。

自分で試してみよう

// TODO: ここにコードを書いてください

// calculateTax関数を作成します


// formatGreeting関数を作成します


// calculateShipping関数を作成します


// 関数をテストし、結果を出力します
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Introduction To TypeScriptのすべてのレッスン

自分で練習してみよう: TypeScriptプレイグラウンド