Операторы типов
Операторы типов
Технический фундамент типовых проверок
Операторы типов нужны для безопасной работы с внешними данными:
typeofэффективен для примитивов и базовых проверок;instanceofпроверяет объектную природу через прототипную цепочку;nullтребует отдельной проверки в объектных сценариях;- точный выбор оператора проверки уменьшает runtime-падения.
Типовая валидация — это первый барьер качества на входе в бизнес-логику.
Зачем проверять типы на практике
Данные из формы, API, query-параметров и localStorage часто приходят не в том виде, который ты ожидаешь. Проверка типа помогает раньше отлавливать ошибки и строить безопасные условия.
Ключевой момент: операторы типов нужны не ради "теории", а для защиты от некорректного входа.
Проверь себя: почему вызов строкового метода на числе чаще всего означает пропущенную проверку типа?
typeof - быстрый базовый инструмент
typeof возвращает строку с типом значения.
console.log(typeof 10); // 'number'
console.log(typeof 'hi'); // 'string'
console.log(typeof true); // 'boolean'
console.log(typeof undefined); // 'undefined'
console.log(typeof function () {}); // 'function'
console.log(typeof {}); // 'object'
Смотри, что важно: typeof null возвращает 'object' (историческая особенность).
instanceof - проверка по цепочке прототипов
instanceof проверяет, создан ли объект определенным конструктором.
const now = new Date();
console.log(now instanceof Date); // true
const list = [];
console.log(list instanceof Array); // true
Здесь часто путаются: instanceof подходит для объектов, а не для примитивов (number, string, boolean).
Проверь себя: что покажет 'hello' instanceof String и почему?
Комбинация проверок для надежности
function normalizeName(value) {
if (typeof value !== 'string') return null;
const trimmed = value.trim();
return trimmed === '' ? null : trimmed;
}
Такой шаблон защищает от runtime-ошибок при неожиданных входах.
Мини-сценарий: обработка данных API
function getItemsCount(payload) {
if (typeof payload !== 'object' || payload === null) return 0;
if (!Array.isArray(payload.items)) return 0;
return payload.items.length;
}
Здесь используются сразу typeof, проверка null и проверка массива.
Смотри, что важно: оператор типов должен соответствовать задаче (примитив или объектная структура).
Частые ошибки новичков
- Полагаться только на
typeofдля всех кейсов. - Забывать отдельную проверку
payload !== null. - Использовать
instanceofдля примитивов. - Пропускать проверки перед обращением к свойствам.
Анти-провал: сначала реши, что ты проверяешь - примитив или объект, и только потом выбирай typeof/instanceof.
Что будет, если изменить входные данные
В getItemsCount:
null->0;- объект без
items->0; itemsне массив ->0;- корректный массив -> его длина.
Это предсказуемое поведение на "грязном" входе, которое особенно важно в интеграциях с внешними API.
Проверь себя: почему безопаснее вернуть 0, чем допустить падение в payload.items.length?
Краткий итог
- Операторы типов помогают валидировать входные данные до основной логики.
typeofудобен для примитивов и базовых проверок.instanceofполезен для объектов и экземпляров классов.- Проверка
nullобязательна в связке сtypeofдля объектов. - Грамотная типовая проверка снижает количество runtime-ошибок в продакшене.