Verificación de tipo de clase en TypeScript: ¿cómo determinar si un objeto es una instancia de una clase específica?
¡Hola a todos! Recientemente comencé a aprender TypeScript y me encontré con un problema al verificar tipos en tiempo de ejecución.
Tengo una jerarquía de clases:
```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!");
}
}
```
Estoy escribiendo una función que toma un array `Animal[]` y quiere realizar diferentes acciones para perros y gatos. En JavaScript usaría `instanceof`, pero TypeScript arroja un error cuando intento hacerlo así:
```typescript
function processAnimals(animals: Animal[]) {
for (const animal of animals) {
if (animal instanceof Dog) { // Error: 'Dog' refers to a value, but is being used as a type here
animal.bark();
} else if (animal instanceof Cat) {
animal.meow();
}
}
}
```
TypeScript dice: `'Dog' refers to a value, but is being used