> Почему проверка типа через instanceof не работает с интерфейсами в TypeScript (TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Точка
Стек: TypeScript
> Пример ответа
instanceof в TypeScript работает только с классами, потому что он проверяет цепочку прототипов объекта во время выполнения (runtime). Интерфейсы же - это исключительно конструкция TypeScript, которая существует только на этапе компиляции и полностью стирается при транспиляции в JavaScript. В рантайме от интерфейса не остаётся никакого кода, поэтому instanceof не может ничего проверить.
Например, если написать obj instanceof MyInterface, TypeScript выдаст ошибку: 'MyInterface' only refers to a type, but is being used as a value here. Чтобы проверить соответствие интерфейсу, используют пользовательские защитники типов (type guards), например:
TYPESCRIPTinterface User {name: string;age: number;}function isUser(obj: any): obj is User {return typeof obj.name === 'string' && typeof obj.age === 'number';}
Или применяют дескриминантные объединения (discriminated unions) с общим полем-дискриминатором.
> Похожие задачи по frontend
Что такое типы any и unknown в TypeScript
Что может быть неправильно в решении функции для вычисления площади фигур с использованием типов и интерфейсов TypeScript
Какие сущности TypeScript остаются в рантайме после транспиляции
Как реализовать динамически настраиваемое поле в интерфейсе TypeScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью