typeof演算子 (typeof operator)
JavaScriptのtypeof演算子では値の型を調べることができます。
javascripttypeof 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"
javascripttypeof 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を考慮した実装は次のようになります。
javascriptfunction isObject(value) {return value !== null && typeof value === "object";}
javascriptfunction isObject(value) {return value !== null && typeof value === "object";}
ここで説明したのはJavaScriptのtypeof演算子です。TypeScriptのtypeof型演算子については、typeof型演算子の説明をご覧ください。