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 かで別々のロジック)にのみオーバーロードが必要です。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%