Verificação de tipo de classe em TypeScript: como determinar se um objeto é uma instância de uma classe específica?
Olá a todos! Recentemente comecei a estudar TypeScript e me deparei com um problema ao verificar tipos em tempo de execução.
Tenho uma hierarquia de classes:
```typescript
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
}
class Dog extends Animal {
bark() {
console.log("Woof!");
}
}
class Cat extends Animal {
meow() {
console.log("Meow!");
}
}
```
Estou escrevendo uma função que recebe um array `Animal[]` e quer executar ações diferentes para cães e gatos. Em JavaScript, eu usaria `instanceof`, mas o TypeScript gera um erro quando tento fazer assim:
```typescript
function processAnimals(animals: Animal[]) {
for (const animal of animals) {
if (animal instanceof Dog) { // Erro: 'Dog' refere-se a um valor, mas está sendo usado como um tipo aqui
animal.bark();
} else if (animal instanceof Cat) {
animal.meow();
}
}
}
```
TypeScript diz: `'Dog' refere-se a um valor, mas está sendo usado