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