カテゴリ: TypeScript 更新日: 2026/01/04

TypeScriptでOptional Chaining(?.)とNullish Coalescing(??)を使う方法をやさしく解説

TypeScriptでOptional Chaining(?.)とNullish Coalescing(??)を使う方法
TypeScriptでOptional Chaining(?.)とNullish Coalescing(??)を使う方法

先生と生徒の会話形式で理解しよう

生徒

「TypeScriptのコードを見ていると、?.とか??という記号が出てきて、何をしているのか全然わかりません…」

先生

「それはOptional ChainingとNullish Coalescingという書き方ですね。どちらもエラーを防ぎ、プログラムを安全に書くための仕組みです。」

生徒

「エラーを防ぐってどういうことですか?パソコンを触ったことがなくても理解できますか?」

先生

「もちろんです。身近なたとえを使って、ひとつずつ丁寧に説明していきましょう。」

1. Optional Chaining(?.)とは何か?

1. Optional Chaining(?.)とは何か?
1. Optional Chaining(?.)とは何か?

Optional Chaining(オプショナルチェイニング)は、TypeScriptやJavaScript(ES6/ESNext)で使える書き方で、 「値が存在しないかもしれない場合でも、安全にプロパティへアクセスする方法」です。

プログラムでは、データが「存在しない」状態になることがあります。これを専門用語で null(ヌル)undefined(アンディファインド)と呼びます。 nullは「中身が空」、undefinedは「そもそも用意されていない」という意味だと考えてください。

例えるなら、引き出しの中に物が入っているか分からない状態で、いきなり手を突っ込むと危ないですよね。 Optional Chainingは「中に物があるか確認しながら、そっと手を入れる」ようなイメージです。

2. Optional Chainingを使わない場合の問題点

2. Optional Chainingを使わない場合の問題点
2. Optional Chainingを使わない場合の問題点

Optional Chainingを使わない場合、存在しないデータにアクセスすると、 プログラムはエラーを起こして止まってしまいます。 エラーとは、パソコンが「それはできません」と作業を中断する状態のことです。


type User = {
    name: string;
    address?: {
        city: string;
    };
};

const user: User = { name: "太郎" };

// エラーが起きる可能性がある書き方
console.log(user.address.city);

この例では、addressが存在しない可能性があります。 それなのにcityを直接取り出そうとすると、「そんな情報はありません」とエラーになります。

3. Optional Chaining(?.)の基本的な使い方

3. Optional Chaining(?.)の基本的な使い方
3. Optional Chaining(?.)の基本的な使い方

Optional Chainingでは、アクセスしたい場所の前に?.を付けます。 これにより、「もし存在していれば使う、なければ何もしない」という安全な動きになります。


console.log(user.address?.city);

この書き方なら、addressが存在しない場合でもエラーになりません。 結果はundefinedになり、プログラムはそのまま続行されます。


undefined

Optional Chainingは、初心者がつまずきやすい「エラーで止まる問題」を減らしてくれる、 とても重要なESNextの機能です。

4. Nullish Coalescing(??)とは何か?

4. Nullish Coalescing(??)とは何か?
4. Nullish Coalescing(??)とは何か?

Nullish Coalescing(ヌリッシュコアレッシング)は、 nullやundefinedだった場合に、代わりの値を使う仕組みです。

例えば、名前が登録されていない人に対して、 「名前未設定」と表示したい場合がありますよね。 そのようなときに使うのが??です。

5. Nullish Coalescing(??)の基本例

5. Nullish Coalescing(??)の基本例
5. Nullish Coalescing(??)の基本例

??は「左側がnullまたはundefinedなら、右側を使う」という意味です。 0や空文字は正常な値として扱われる点がポイントです。


const userName: string | null = null;

const displayName = userName ?? "名前未設定";

console.log(displayName);

名前未設定

このように、データが存在しない場合でも、 画面表示や処理を安定させることができます。

6. Optional ChainingとNullish Coalescingを組み合わせる

6. Optional ChainingとNullish Coalescingを組み合わせる
6. Optional ChainingとNullish Coalescingを組み合わせる

実際のTypeScript開発では、Optional ChainingとNullish Coalescingを 組み合わせて使うことがよくあります。 これにより、安全で読みやすいコードになります。


const cityName = user.address?.city ?? "不明";

console.log(cityName);

不明

このコードは、「住所があり、都市名があればそれを使う。 なければ『不明』と表示する」という意味になります。

7. 初心者が混乱しやすいポイント

7. 初心者が混乱しやすいポイント
7. 初心者が混乱しやすいポイント

初心者の方がよく混乱するのは、 「なぜif文でチェックしなくていいのか」という点です。 Optional ChainingとNullish Coalescingは、 その確認作業を短く、分かりやすく書くための仕組みです。

これらはTypeScriptとES6/ESNextの連携を理解するうえで重要な要素であり、 安全で壊れにくいプログラムを書くための基本知識になります。

カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptの配列を逆順にする方法(reverseメソッド活用)
New2
JavaScript
JavaScriptの配列の並べ替え(sortメソッド)の基本とカスタマイズ
New3
TypeScript
TypeScriptとJSDocを併用して型推論を強化!初心者向けガイド
New4
JavaScript
JavaScriptの配列の長さ(lengthプロパティ)を理解しよう
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
TypeScript
TypeScriptの型定義ファイル管理を徹底解説!読み込み順序とDefinitelyTypedの仕組み
No.3
Java&Spring記事人気No3
TypeScript
TypeScriptで型定義を拡張する方法を徹底解説!モジュール拡張とDefinitelyTypedの使い方
No.4
Java&Spring記事人気No4
TypeScript
TypeScript型定義ファイル(d.ts)の分割構成を徹底解説!大規模開発でも迷わない管理術
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.6
Java&Spring記事人気No6
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptで型定義を参照する方法!triple-slash directives(三斜線ディレクティブ)を徹底解説
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】