Что такое instanceof в TypeScript

Ответ

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 или между разными фреймами/окнами браузера

Ответ 18+ 🔞

Ну ты смотри, какой придурок этот 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, а это вообще все объекты наследуют, ядрёна вошь!

Но вот что тебе важно понять, чтобы потом не охуеть:

  • Работает он только с классами или старыми добрыми функциями-конструкторами. С интерфейсами TypeScript — нихуя! Они же только на этапе компиляции существуют, а в рантайме их след простыл.
  • Может тебя и обмануть, сука! Если кто-то накостылял с Symbol.hasInstance или если объекты из разных окон браузера — тут уже доверия ебать ноль, может наврать с три короба.

Короче, инструмент полезный, но с подвохом, как хитрая жопа. Используй, но головой думай, э бошка!