Что такое instanceof в TypeScript

«Что такое instanceof в TypeScript» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

instanceof в TypeScript — это оператор, проверяющий, является ли объект экземпляром определенного класса или конструктора. Он работает с прототипной цепочкой объекта.

class Animal {}
class Dog extends Animal {}

const dog = new Dog();
console.log(dog instanceof Dog); // true
console.log(dog instanceof Animal); // true (наследование)
console.log(dog instanceof Object); // true (все объекты наследуют от Object)

Особенности:

  • Работает только с классами и функциями-конструкторами
  • Не работает с интерфейсами TypeScript (они существуют только на этапе компиляции)
  • Может давать ложные результаты при работе с Symbol.hasInstance или между разными фреймами/окнами браузера