arg?: T 省略可能パラメータとデフォルトパラメータ
最終更新:2026-10-22
arg?: T 省略可能パラメータとデフォルトパラメータ
? は省略可能パラメータ(渡さなくてもよい)を示し、= はパラメータにデフォルト値(省略時に自動的に使われる)を設定します。両者により呼び出し側は「必要な情報だけ」を渡せるようになり、親切な関数シグネチャを作るための最初の道具です。
| グループ | 関数とクラス |
|---|---|
| 種類 | 構文 |
| strict モード | 不要 |
ℹ️ 説明 エディタは TypeScript を JavaScript にトランスパイルして実行します(型チェックなし)。型チェック結果は各サンプルの出力を参照してください。
📝 構文
function buildLabel(orderId: number, prefix = "ORD", note?: string): string {
const base = `${prefix}-${String(orderId).padStart(5, "0")}`;
return note ? `${base} (${note})` : base;
}
⚙️ パラメータ
| prefix = "ORD" | デフォルトパラメータ:省略時にこの値が使われ、型はデフォルト値から string と推論されます |
|---|---|
| note?: string | 省略可能パラメータ:未指定のときは undefined で、実際の型は string | undefined です。使用前にナローイングが必要です |
戻り値:戻り値の型は通常どおり注釈するか推論します。ただし省略可能パラメータが計算に使われる場合は、型の上で undefined の分岐も扱えているかに注意してください。
▶ サンプル
下のコードを編集して「試す」を押すと、トランスパイル実行結果を確認できます:
出力:
ORD-00042
VIP-00042
ORD-00042 (急ぎ)
(トランスパイル後の実行出力。note を省略するとそれは undefined であり、ラベルに "undefined" の文字は現れません)
💡 ポイント
ℹ️ 説明 省略可能パラメータは必須パラメータの後ろに置く必要があります。デフォルトパラメータは任意の位置に書けますが、中間に置いた場合それをスキップするには明示的に undefined を渡します。
⚠️ 注意 note?: string の実際の型は string | undefined なので、直接文字列メソッドを呼ぶとエラーになります。先に if (note) で絞り込むか、デフォルトパラメータに変更してください。
💡 ヒント パラメータが3つを超えるなら設定オブジェクト(options: { prefix?: string; note?: string })に切り替えると、長い位置引数のリストより読みやすく拡張もしやすくなります。
🏷️ 関連関数とクラス
💡 関連ケース
ケースは今後追加予定です。
📚 関連チュートリアル
❓ よくある質問
Q デフォルトパラメータと省略可能パラメータは同時に使えますか?
A 使えますし、よくある形です。prefix = "ORD" はデフォルト値を持ちつつ省略もできます。純粋な ? パラメータは省略時に undefined になるため、関数本体で対処する必要があります。
Q 省略可能パラメータの後ろに必須パラメータを置けますか?
A 置けません。必須は先に置くようコンパイラが要求します。デフォルトパラメータを中間に置く場合は例外で、スキップするには buildLabel(42, undefined, "加急") のように明示的に undefined を渡します。
Q デフォルトパラメータと関数オーバーロードはどう使い分けますか?
A 単に「渡す引数を減らしたい」だけならデフォルト値や省略可能パラメータを使います。パラメータの型そのものが異なる場合(string か Date かで別々のロジック)にのみオーバーロードが必要です。