Avatar ·

Como verificar o tipo de classe em TypeScript: instanceof, type guards e proteção de tipos

Olá a todos! Sou novo em TypeScript e me deparei com um problema de verificação de tipos de classes. Tenho uma hierarquia de classes: uma classe base `Animal` e duas classes filhas — `Dog` e `Cat`. Cada uma delas tem seus próprios métodos únicos: `bark()` em Dog e `meow()` em Cat. Recebo um array de objetos do tipo `Animal[]` de uma fonte externa (por exemplo, API), e preciso determinar a qual classe cada objeto pertence para chamar o método correspondente. Aqui está um exemplo de código: ```typescript class Animal { name: string; constructor(name: string) { this.name = name; } } class Dog extends Animal { bark() { console.log(`${this.name} says: Woof!`); } } class Cat extends Animal { meow() { console.log(`${this.name} says: Meow!`); } } const animals: Animal[] = [new Dog('Rex'), new Cat('Molly')]; animals.forEach(animal => { // Como verificar se animal é Dog ou Cat? // if (animal instanceof Dog) { ... } — isso funciona? // Ou preciso usar t