Как проверить тип переменной
Короткий ответ
Оператор typeof возвращает тип в виде строки:
console.log(typeof 42);
console.log(typeof 'hello');
console.log(typeof true);
console.log(typeof undefined);
console.log(typeof (() => {}));Результат:
number
string
boolean
undefined
functionОсобые случаи
Для null и массивов typeof говорит object. Проверяйте их отдельно:
console.log(typeof null, typeof [1, 2]);
console.log(Array.isArray([1, 2]), [1, 2] === null);Результат:
object object
true falseОбъекты классов
instanceof проверяет, каким классом создан объект:
console.log(new Date() instanceof Date);
console.log(new Error('oops') instanceof Error);
console.log([] instanceof Object);Результат:
true
true
trueУниверсальная функция
Object.prototype.toString даёт точное название для любого значения:
const typeOf = (value) => Object.prototype.toString.call(value).slice(8, -1);
console.log(typeOf(null), typeOf([]), typeOf(new Date()), typeOf(/a/), typeOf(new Map()));Результат:
Null Array Date RegExp MapЧастая ошибка
Проверка typeof value === 'object' пропускает null, а чтение свойства у него выбрасывает ошибку:
const isObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
console.log(typeof null === 'object');
console.log(isObject(null), isObject({}), isObject([]));Результат:
true
false true falseФункции из этого ответа
- typeof — Возвращает строку с типом значения.
- Array.isArray — Проверяет, является ли значение массивом.
- instanceof — Проверяет, создан ли объект классом (или его наследником).