型チェックの使い方 | typeof演算子 | JavaScript 超完全入門 基本から発展までのすべて

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
~
ad. 価格範囲を指定して商品を探せます

型チェックとは?

JavaScriptは動的型付け言語であり、変数の型は値によって自動的に決まります。

そのため、プログラムによっては「この値は文字列なのか」「数値なのか」「配列なのか」といった型チェックを行う必要があります。

型を正しく判定することで、予期しないエラーを防ぎ、安全なプログラムを書くことができます。

typeof演算子を使った型チェック

最も基本的な方法がtypeof演算子です。

typeofは、値のデータ型を文字列で返します。

const value = "JavaScript";

if (typeof value === "string") {
    console.log("これは文字列です");
} else if (typeof value === "number") {
    console.log("これは数値です");
} else {
    console.log("別の型です");
}

この例では、typeofの結果に応じて処理を分岐しています。

  1. typeof valueを実行します。
  2. 結果が"string"なら文字列として処理します。
  3. それ以外は別の型として処理します。

typeofで判定できる型

typeofは次のような値を判定できます。

データ型 typeofの結果
数値 "number"
文字列 "string"
真偽値 "boolean"
undefined "undefined"
オブジェクト "object"
関数 "function"
Symbol "symbol"
BigInt "bigint"

typeofの注意点

typeofにはいくつか注意点があります。

nullの判定

typeof nullは"object"を返します。

これはJavaScript初期から残る仕様であり、現在でも互換性のため変更されていません。

const value = null;

console.log(typeof value);

// object

nullを判定したい場合は、厳密等価演算子を使用します。

const value = null;

if (value === null) {
    console.log("これはnullです");
}

配列はobjectになる

配列もオブジェクトの一種であるため、typeofでは区別できません。

const array = [1, 2, 3];

console.log(typeof array);

// object

instanceof演算子を使った型チェック

オブジェクトが特定のコンストラクタから作成されたかを調べるには、instanceofを使用します。

const date = new Date();

if (date instanceof Date) {
    console.log("これはDateオブジェクトです");
}

instanceofは、DateやMap、Setなどのオブジェクトを判定するときにも利用できます。

配列の型チェック

配列かどうかを判定するには、Array.isArray()を使用します。

現在ではこれが最も推奨される方法です。

const array = [1, 2, 3];

if (Array.isArray(array)) {
    console.log("これは配列です");
}

typeofでは配列も"object"になるため、配列を判定する場合はArray.isArray()を利用しましょう。

型チェックの応用例

型チェックは、関数へ渡された引数を検証する際にもよく利用されます。

function addNumbers(a, b) {
    if (typeof a !== "number" || typeof b !== "number") {
        console.error("引数は数値である必要があります");
        return;
    }

    return a + b;
}

console.log(addNumbers(10, 20));
console.log(addNumbers(10, "20"));

// 30
// 引数は数値である必要があります

このように、処理を実行する前に型を確認することで、意図しない値が渡された場合でも安全に処理できます。

初心者が知っておきたいポイント

  • typeofは基本的な型チェックに利用する。
  • nullはtypeofで"object"になる。
  • 配列はtypeofでは判定できず、Array.isArray()を利用する。
  • オブジェクトの種類を判定する場合はinstanceofを利用する。
  • 入力値のチェックを行うことで、安全なプログラムを作成できる。

まとめ

  • typeofは基本的なデータ型を判定する演算子である。
  • nullはtypeofでは"object"になるため注意が必要である。
  • 配列はArray.isArray()で判定するのが推奨される。
  • オブジェクトの種類はinstanceofで確認できる。
  • 適切な型チェックを行うことで、安全性と保守性の高いコードを書ける。