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型演算子の説明をご覧ください。