← Назад к вопросам

Что делает typeof?

2.0 Middle🔥 112 комментариев
#Теория тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что делает оператор typeof в JavaScript?

typeof — это унарный оператор в JavaScript, который возвращает строку, указывающую тип операнда. Его основная цель — определение типа данных переменной или выражения на этапе выполнения кода, что особенно важно в контексте динамической типизации JavaScript.

Основные возвращаемые значения

Результатом typeof всегда является одна из следующих строк:

  • "undefined" — значение не определено.
  • "boolean" — логический тип (true/false).
  • "number" — числовой тип (включая NaN, Infinity).
  • "string" — строковый тип.
  • "bigint" — тип для больших целых чисел.
  • "symbol" — тип символ (ES6).
  • "function" — объект, который может быть вызван.
  • "object" — для объектов, массивов, null и большинства сущностей.
  • "object" (специальный случай для null) — историческая ошибка языка.

Примеры использования

console.log(typeof 42);           // "number"
console.log(typeof 'Hello');      // "string"
console.log(typeof true);         // "boolean"
console.log(typeof undefined);    // "undefined"
console.log(typeof null);         // "object" (известная особенность!)
console.log(typeof {a: 1});       // "object"
console.log(typeof [1, 2, 3]);    // "object" (массивы — тоже объекты)
console.log(typeof function() {});// "function"
console.log(typeof Symbol());     // "symbol"
console.log(typeof 123n);         // "bigint"

Особенности и нюансы

  1. Историческая ошибка с null: typeof null возвращает "object", хотя null — примитив. Это баг в ранних реализациях JavaScript, который сохраняется для обратной совместимости.

  2. Проверка на undefined:

    let variable;
    if (typeof variable === 'undefined') {
        console.log('Переменная не определена');
    }
    
  3. Отличие от instanceof: typeof определяет примитивные типы и функции, а instanceof проверяет цепочку прототипов для объектов.

  4. Безопасная проверка существования:

    // Безопасно даже если переменная не объявлена
    if (typeof someUndefinedVar === 'undefined') {
        console.log('Безопасная проверка');
    }
    

Практическое применение в тестировании

В QA Automation оператор typeof полезен для:

  • Валидации параметров в функциях и API
  • Отладки — быстрая проверка типов данных
  • Динамических проверок в тестах пользовательского интерфейса
  • Обработки ответов от сервера с непредсказуемой структурой
// Пример валидации в тесте
function validateAPIResponse(response) {
    if (typeof response !== 'object') {
        throw new Error(`Ожидался объект, получен: ${typeof response}`);
    }
    if (typeof response.data !== 'object') {
        throw new Error(`Поле data должно быть объектом`);
    }
    if (typeof response.status !== 'number') {
        throw new Error(`Статус должен быть числом`);
    }
}

Важная альтернатива: Array.isArray()

Поскольку typeof массивов возвращает "object", для точной проверки массивов используйте:

const arr = [1, 2, 3];
console.log(typeof arr);          // "object"
console.log(Array.isArray(arr));  // true

Заключение

typeof — фундаментальный оператор проверки типов в JavaScript, но с важными ограничениями. В современных проектах часто используют TypeScript для статической типизации, а в чистом JavaScript дополняют typeof другими методами проверки (Array.isArray(), instanceof, Object.prototype.toString.call()). Понимание поведения typeof критически важно для написания надежного кода и эффективной отладки в автоматизированном тестировании.

Что делает typeof? | PrepBro