初心者向け:typeof 演算子の基本
typeof は「値のデータ型を文字列で教えてくれる」演算子です。型を確認したいときの最初の相棒になります。
できることと基本の使い方
typeof 123 // "number"
typeof "hello" // "string"
typeof true // "boolean"
typeof undefined // "undefined"
typeof null // "object"(注意!後述)
typeof Symbol("x")// "symbol"
typeof 10n // "bigint"
JavaScript- 結果は文字列: 例えば
"number","string"のように返ります。 - 式でもOK: 変数や計算結果に使えます。
代表的な型の判定
- 数値(Number):
typeof 3.14 // "number"
typeof NaN // "number"(NaNでも number)
JavaScript- 文字列(String):
typeof `template` // "string"
JavaScript- 真偽値(Boolean):
typeof (5 > 3) // "boolean"
JavaScript- 未定義(Undefined):
let x;
typeof x // "undefined"
JavaScript- 意図的な空(Null)の歴史的仕様:
typeof null // "object"(バグ由来の仕様)
// null 判定は value === null を使う
JavaScript- シンボル(Symbol)と大きな整数(BigInt):
typeof Symbol() // "symbol"
typeof 1n // "bigint"
JavaScriptオブジェクト・配列・関数の判定
- オブジェクト(Object)全般:
typeof {a:1} // "object"
JavaScript- 配列(Array)は typeof だと “object”:
typeof [1,2,3] // "object"
Array.isArray([1,2]) // true(配列判定はこれを使う)
JavaScript- 関数(Function)は特別に “function”:
typeof function(){} // "function"
typeof (() => {}) // "function"
JavaScriptよくある落とし穴と回避策
- null が “object”:
- 回避:
value === nullで判定する。
- 回避:
- 配列の判定:
- 回避:
Array.isArray(value)を使う。
- 回避:
- NaN は “number”:
- 回避: NaN 判定は
Number.isNaN(value)を使う。
- 回避: NaN 判定は
- 未宣言変数でも安全:
// typeof は未宣言でも ReferenceError を出さず "undefined" を返す
typeof notDeclared // "undefined"
JavaScript- class でも “function”:
class A {}
typeof A // "function"(クラスは関数の糖衣構文)
JavaScript実用パターン
- 型に応じて処理を切り替える:
function describe(v) {
switch (typeof v) {
case "string": return `文字列: ${v}`;
case "number": return `数値: ${v}`;
case "boolean": return `真偽値: ${v}`;
case "bigint": return `BigInt: ${v}`;
case "symbol": return `Symbol: ${String(v)}`;
case "function":return `関数`;
case "undefined": return "未定義";
case "object": return v === null ? "null" : "オブジェクト";
}
}
JavaScript- 配列を安全に扱う:
function asArray(x) {
if (Array.isArray(x)) return x;
return [x]; // 配列でなければ配列化
}
JavaScriptミニ練習
- 問1: 次の結果を予想せよ。
typeof null // ?
typeof NaN // ?
typeof [] // ?
typeof (() => {}) // ?
JavaScript解答: "object", "number", "object", "function"
- 問2: 値が配列なら長さ、それ以外なら型名を返す関数を書け。
function info(v) {
return Array.isArray(v) ? v.length : typeof v;
}
JavaScript- 問3: NaN のときだけ「NaN」と表示し、それ以外は typeof の結果を表示せよ。
function typeOrNaN(v) {
return Number.isNaN(v) ? "NaN" : typeof v;
}
JavaScriptまとめ
- typeof は型を文字列で返す基本ツール。
- null は “object”、配列は “object”、関数は “function” がポイント。
- 配列判定は Array.isArray、NaN 判定は Number.isNaN を使う。
- 未宣言でも安全に “undefined” を返すため、ガードに便利。
