✅この記事について
現在TypeScript学習中です!わからなかったことをまとめたので、自分用備忘録を兼ねて記事を作成します。
✅ 概要
オプショナルチェイニング(?.)は、JavaScript/TypeScript の構文で、
null または undefined の可能性があるプロパティに安全にアクセスするための演算子。
✅ 書き方と意味
const value = obj?.prop
-
objがnullまたはundefinedの場合 →valueはundefinedになる(エラーにならない) -
objが存在すればobj.propの値を返す
✅ よくある使用例
1. ネストしたオブジェクトの安全なアクセス
const user = { profile: { name: "Alice" } }
const name = user.profile?.name // "Alice"
const age = user.profile?.age // undefined
const city = user.address?.city // undefined(address がないので安全にスキップ)
2. 配列の要素チェック
const items = []
const firstId = items[0]?.id // undefined(items[0] が存在しないため)
3. 関数の存在確認と実行
user.printName?.() // 関数があれば呼び出す、なければ無視
✅ よく一緒に使われる構文:Null合体演算子(??)
const result = obj?.value ?? "デフォルト値"
-
obj?.valueがnullまたはundefinedのとき"デフォルト値"を返す -
falseや0はそのまま使われる(nullish 判定)
❌ よくある間違い(古い書き方)
// エラーになる可能性あり(objがnullの場合)
const value = obj.prop.subprop
✅ メリットまとめ
- ネストしたオブジェクトの安全な参照ができる
- 冗長な
ifや&&チェーンを省略できる - 配列・関数・オブジェクトすべてに使える
- コードが読みやすくなる
💡 注意点
-
プロパティアクセス/関数呼び出しのみに使用可能
- OK:
obj?.prop,obj?.[key],func?.() - NG:
obj?prop,?.obj.propなど文法誤り
- OK:
- オプショナルチェイニングは左側が
null/undefinedのみを対象としている