引数のデフォルト値
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 をチェックする必要がなくなるためです。
チャレンジ
簡単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関数を作成します
// 関数をテストし、結果を出力しますこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Introduction To TypeScriptのすべてのレッスン
2基本の型
基本の型: str, num, boolean'any' 型: 脱出ハッチ'unknown' 型'null' と 'undef' の扱い型推論の実践明示的な型アノテーションまとめ:基本の型の演習5型:エイリアス、ユニオン型、インターセクション型
プリミティブ型の型エイリアスユニオン型 ('|')ユニオン型の扱い方リテラル型インターセクション型 ('&')型エイリアスの組み合わせまとめ:高度な型の組み合わせ自分で練習してみよう: TypeScriptプレイグラウンド