1. Introduction
The typeof operator returns the type of the object or primitive operand. The return type of typeof is string. The typeof operator is very helpful but is not suitable for all situations. The typeof operator returns object for many objects so it can not be used precisely in the code to check the type. For example:
console.log(typeof []); // object
console.log(typeof null); // object
console.log(typeof new String("")); // object
console.log(typeof new Number(10)); // object
As you observe, the typeof operator returns object in all these cases. So it can not be used precisely to check the type of operator.
2. Syntax
The syntax to use typeof is:
typeof operand typeof (operand)
You can use typeof without parentheses around operand but when you need to get type of an expression, you need to use parentheses. For example:
let num = 10; console.log(typeof num + " hello"); // 'number hello' console.log(typeof (num + " hello")); // 'string'
3. Result of typeof with primitive and object
Following is a summary of the result of using typeof with different primitive and object:
| Type | Result |
| BigInt | “bigint” |
| Boolean | “boolean” |
| Function object | “function” |
| Null | “object” |
| Number | “number” |
| String | “string” |
| Symbol | “symbol” |
| Function object | “function” |
| Undefined | “undefined” |
| any other object | “object” |
4. typeof with ‘new’ operator
The typeof operator when used with constructor functions, except Function constructor returns ‘object’.
let num = new Number(10);
let str = new String("hello");
console.log(typeof num); // result is 'object'
console.log(typeof str); // result is 'object'
The typeof operator when used with Function constructor returns ‘function’.
let func = new Function(); console.log(typeof func); // result is 'function'
5. Error with typeof
The typeof operator throws ReferenceError when used with let, const or class when in temporal dead zone.
console.log(typeof x); // undefined
console.log(typeof a); // ReferenceError
console.log(typeof b); // ReferenceError
console.log(typeof test); // ReferenceError
let a = 0;
const b = 1;
class test {}
6. Examples of typeof
console.log(typeof 10); // number
console.log(typeof 10.1); // number
console.log(typeof 10); // number
console.log(typeof Infinity); // number
console.log(typeof NaN); // number
console.log(typeof Number("1")); // number
console.log(typeof "test"); // string
console.log(typeof typeof 1); // string
console.log(typeof "10"); // string
console.log(typeof true); // boolean
console.log(typeof false); // boolean
console.log(typeof Boolean(1)); // boolean
console.log(typeof new String("hello")); // object
console.log(typeof []); // object
console.log(typeof [1, 2, 3]); // object
console.log(typeof null); // object
console.log(typeof new Number(10)); // object
console.log(typeof new Boolean(true)); // object
console.log(typeof Symbol()); // symbol
console.log(typeof Symbol("test")); // symbol
console.log(typeof Symbol.iterator); // symbol
console.log(typeof undefined); // undefined
console.log(typeof function () {}); // function
console.log(typeof class C {}); // function
7. Conclusion
In this tutorial, we discussed typeof operator. A better understanding of this operator is essential to write bug free code. You should know that typeof operator can not be used in every situation to get the type of operand.
We hope this tutorial was helpful.
