カテゴリ: TypeScript 更新日: 2025/12/19

TypeScriptでtypeof・instanceofを使った型チェックの書き方

TypeScriptでtypeof・instanceofを使った型チェックの書き方
TypeScriptでtypeof・instanceofを使った型チェックの書き方

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

生徒

「先生、TypeScriptで変数の中身がどんな型かを調べる方法ってありますか?」

先生

「良い質問ですね。TypeScriptでは、typeofinstanceofを使って、変数の型をチェックすることができます。」

生徒

「型をチェックすると、何ができるようになるんですか?」

先生

「それを使えば、条件によって安全に処理を分けたり、エラーを防いだりできるんです。では、順番に使い方を見ていきましょう。」

1. typeofとは?

1. typeofとは?
1. typeofとは?

typeof(タイプオブ)は、JavaScriptやTypeScriptで「変数のデータの種類(型)」を調べるための演算子です。TypeScriptでは、これを使って「値が文字列なのか、数値なのか」などを判定できます。

例えば、入力されたデータが文字なのか数字なのかを区別したいときに役立ちます。

▶ typeofを使った基本例


let value: string | number = "Hello";

if (typeof value === "string") {
    console.log("文字列です");
} else if (typeof value === "number") {
    console.log("数値です");
}

このコードでは、valueが文字列のときと数値のときで処理を分けています。typeofを使うと、TypeScriptが自動的に型を絞り込んでくれるため、後の処理でも安全に扱えます。

▶ 実行結果


文字列です

上の例では、valueに文字列「Hello」が代入されているため、「文字列です」と出力されます。

ちなみに、typeofが返す値は次のような文字列になります。

  • "string":文字列
  • "number":数値
  • "boolean":真偽値
  • "object":オブジェクト
  • "undefined":未定義
  • "function":関数

このように、typeofを使えば、簡単に値の種類を調べることができます。

2. instanceofとは?

2. instanceofとは?
2. instanceofとは?

次に紹介するのは、instanceof(インスタンスオブ)です。これは「その変数が、特定のクラスから作られたオブジェクトかどうか」を調べるための演算子です。

たとえば、プログラムでDogCatといったクラスを作り、それぞれを区別して処理したいときに使います。

▶ instanceofの使い方


class Dog {
    bark() {
        console.log("ワンワン!");
    }
}

class Cat {
    meow() {
        console.log("ニャー!");
    }
}

let pet: Dog | Cat = new Dog();

if (pet instanceof Dog) {
    pet.bark();
} else if (pet instanceof Cat) {
    pet.meow();
}

この例では、petDogクラスのインスタンス(実体)であればbark()を、Catであればmeow()を呼び出しています。

▶ 実行結果


ワンワン!

このように、instanceofを使うことで、クラスごとの動きを安全に区別できます。

3. typeofとinstanceofの違い

3. typeofとinstanceofの違い
3. typeofとinstanceofの違い

ここまでの説明で、どちらも「型を調べる」という点は同じですが、実際には使う場面が異なります。違いを整理しておきましょう。

比較項目 typeof instanceof
使う対象 基本型(string, number, booleanなど) クラス・オブジェクト
返り値 文字列("string"など) 真偽値(true / false)
使用例 typeof x === "string" x instanceof MyClass

たとえば、ユーザー入力のように文字や数値をチェックしたいときはtypeof、オブジェクトの種類を確認したいときはinstanceofが適しています。

4. 型ガードとしてのtypeof・instanceof

4. 型ガードとしてのtypeof・instanceof
4. 型ガードとしてのtypeof・instanceof

TypeScriptでは、これらの演算子を「型ガード(Type Guard)」として使うことができます。型ガードとは、「条件分岐によって型を安全に絞り込む」機能のことです。

例えば、typeofで数値かどうかを判定した場合、TypeScriptは「この条件の中ではnumber型だ」と認識してくれます。


function printValue(value: string | number) {
    if (typeof value === "string") {
        console.log("文字列の長さ:", value.length);
    } else {
        console.log("数値の2倍:", value * 2);
    }
}

printValue("Hello");
printValue(10);

▶ 実行結果


文字列の長さ: 5
数値の2倍: 20

このように型を安全に使い分けることで、エラーを防ぎつつ柔軟なコードが書けます。

5. 理解するコツ

5. 理解するコツ
5. 理解するコツ

typeofinstanceofは、TypeScriptで安全なプログラムを書くための基本テクニックです。どちらも型を見分けるための「型チェック」に使われますが、使う対象が異なります。

  • 数値や文字列などの「基本データ型」→ typeof
  • クラスやオブジェクトのインスタンス→ instanceof

型を確認することで、プログラムが意図通りに動くように守ることができるので、初心者のうちから慣れておくと安心です。

まとめ

まとめ
まとめ

TypeScriptでプログラムを書くとき、型の違いを正しく理解し、安全に処理を分岐させることはとても大切です。とくに、値が文字列なのか数値なのかを区別したい場面や、オブジェクトがどのクラスから作られたものなのかを判定したい場面では、typeofinstanceofを使った型チェックが欠かせません。この記事では、基本的な使い方から実務で役立つ考え方まで、段階を追って理解できるように説明してきました。ここでは改めて全体を振り返りながら、型チェックのポイントを整理しておきましょう。

▶ typeofでの型チェックの振り返り

typeofは、ひとつの値がどんな基本型に属しているかを調べるための演算子で、文字列、数値、真偽値などの基本的な判定に非常に強い力を発揮します。プログラムの中で文字列だけに使えるメソッドを呼びたいときや、数値だけを使って計算したいときなど、基本的な処理の安全性を高めてくれる便利な仕組みです。とくに、ユーザー入力のようにデータの種類が曖昧になる場面で、typeofの存在は欠かせません。


function check(value: string | number) {
    if (typeof value === "string") {
        console.log("入力は文字列です:", value);
    } else {
        console.log("入力は数値です:", value);
    }
}
check("こんにちは");
check(42);

このようにtypeofを使うと、TypeScriptは条件の中で値の型を自動的に絞り込んでくれるため、プログラムの可読性と安全性が大幅に向上します。初心者にとって理解しやすい構文でありながら、実務でも確実に役立つ重要な技術です。

▶ instanceofでの型チェックの振り返り

instanceofは、ある変数が特定のクラスから生成されたオブジェクトかどうかを判定するための演算子です。クラスベースの開発ではとくに役立ち、複数のクラスをまとめて扱うときの必須テクニックでもあります。ゲーム開発でキャラクターの種類を区別する場合や、フロントエンドでUI部品を動的に切り替える場合など、さまざまな場面で力を発揮します。


class Dog {
    bark() { console.log("ワンワン"); }
}
class Cat {
    meow() { console.log("ニャー"); }
}
function sound(pet: Dog | Cat) {
    if (pet instanceof Dog) {
        pet.bark();
    } else {
        pet.meow();
    }
}
sound(new Dog());
sound(new Cat());

このように、instanceofを使うことでオブジェクトの種類を安全に判定でき、クラスごとの固有のメソッドを確実に呼び分けることができます。複雑なロジックを扱うアプリケーションではとくに重要な知識となります。

▶ typeofとinstanceofの使い分けのポイント

TypeScriptを扱ううえで、typeofとinstanceofを正しく使い分けることは重要です。typeofは文字列や数値などの基本型を確認するのに適しており、instanceofはクラスを用いたオブジェクトを判別するのに向いています。それぞれ役割が違うため、用途に合わせて選択することでプログラムの安定性と可読性が向上します。

とくに型ガードとして利用する場合、TypeScriptが条件分岐をもとに型を絞り込んでくれる点を理解しておくと、より安全で柔軟なコードを書くことができるようになります。初心者のうちは「どの場面で何を使うべきか」を迷いやすい部分ですが、実際に手を動かしながら型の違いを意識していくことで、一歩ずつ確実に理解が深まっていきます。

▶ 学んだ知識を活用するためのサンプルコード

ここでは、typeofとinstanceofを組み合わせて使う少し応用的なサンプルを紹介します。複数のデータ形式をまとめて扱う場面で、型チェックをどのように役立てるかを確認できます。


class Message {
    constructor(public text: string) {}
}
function handleInput(input: string | number | Message) {
    if (typeof input === "string") {
        console.log("文字入力:", input.toUpperCase());
    } else if (typeof input === "number") {
        console.log("数値入力:", input * 10);
    } else if (input instanceof Message) {
        console.log("メッセージ入力:", input.text);
    }
}
handleInput("hello");
handleInput(7);
handleInput(new Message("こんにちは"));

このサンプルのように、複数のデータを一つの関数で柔軟に扱えるようになると、TypeScriptの型システムを活かした堅牢な設計が身につきます。型チェックは難しそうに見えますが、一つずつ丁寧に理解していくことで、必ず習得できる技術です。

先生と生徒の振り返り会話

生徒

「先生、今回の内容で、typeofとinstanceofの違いがようやく分かってきました!」

先生

「よかったですね。型を正しく判別できると、プログラム全体がとても書きやすくなりますよ。安全性も上がりますしね。」

生徒

「typeofは基本型、instanceofはクラスの判定に使うという点も覚えました。」

先生

「その通りです。これらを使いこなせるようになれば、TypeScriptの理解はさらに深まりますよ。次のステップでは、もっと複雑なデータの扱い方にも挑戦できますね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

TypeScriptでtypeofとは何ですか?どんなときに使いますか?

typeofは、TypeScriptで変数の型を調べるための演算子です。数値、文字列、真偽値、オブジェクトなど、基本的なデータ型を判定するときに使います。
関連記事:
カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptでPromiseの型推論をマスター!非同期処理とasync/awaitの基礎講座
New2
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
New3
JavaScript
JavaScriptのBigInt型とは?大きな整数の扱い方と活用例
New4
JavaScript
JavaScriptでスクロール位置を取得・操作する方法を完全解説!scrollTopなどDOM操作入門
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのクロージャーとは?仕組みと実践例をやさしく解説
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptで新しい要素を作成する方法(createElement, appendChildなど)
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptでフォーム要素を操作するDOMテクニックを初心者向けに徹底解説
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptで親要素・子要素・兄弟要素を取得する方法を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
TypeScript
TypeScriptでnull・undefinedを型ガードするテクニックを徹底解説!初心者でも理解できる安全なコードの書き方
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptで要素の属性を操作する方法を完全解説!初心者でもわかるDOM操作入門
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptのonclick・onchangeなどの基本イベントを理解しよう