メインコンテンツまでスキップ

typeof演算子 (typeof operator)

JavaScriptのtypeof演算子では値の型を調べることができます。

javascript
typeof true; //=> "boolean"
typeof 0; //=> "number"
typeof "Hello World"; //=> "string"
typeof undefined; //=> "undefined"
typeof null; //=> "object"
typeof Symbol(); //=> "symbol"
typeof 1n; //=> "bigint"
typeof [1, 2, 3]; //=> "object"
typeof { a: 1, b: 2 }; //=> "object"
javascript
typeof true; //=> "boolean"
typeof 0; //=> "number"
typeof "Hello World"; //=> "string"
typeof undefined; //=> "undefined"
typeof null; //=> "object"
typeof Symbol(); //=> "symbol"
typeof 1n; //=> "bigint"
typeof [1, 2, 3]; //=> "object"
typeof { a: 1, b: 2 }; //=> "object"

typeof演算子で特筆すべきなのは、値がnullの場合です。typeof nullの演算結果は"null"ではなく"object"です。誤解が起きやすい部分なので注意しましょう。特に値がオブジェクトかどうかを判定したいときは、typeof null"object"になることを意識して書かないと思いがけない不具合になることがあります。

javascript
// まずい実装
function isObject(value) {
return typeof value === "object"; // valueがnullになる場合を考慮していない
}
isObject(null); // 戻り値がtrueになってしまう
javascript
// まずい実装
function isObject(value) {
return typeof value === "object"; // valueがnullになる場合を考慮していない
}
isObject(null); // 戻り値がtrueになってしまう

typeof nullを考慮した実装は次のようになります。

javascript
function isObject(value) {
return value !== null && typeof value === "object";
}
javascript
function isObject(value) {
return value !== null && typeof value === "object";
}

ここで説明したのはJavaScriptのtypeof演算子です。TypeScriptのtypeof型演算子については、typeof型演算子の説明をご覧ください。