Vérification de type de classe en TypeScript : comment déterminer si un objet est une instance d'une classe spécifique ?
Bonjour à tous ! J'ai récemment commencé à apprendre TypeScript et j'ai rencontré un problème lors de la vérification des types à l'exécution.
J'ai une hiérarchie 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!");
}
}
```
J'écris une fonction qui prend un tableau `Animal[]` et veut effectuer différentes actions pour les chiens et les chats. En JavaScript, j'utiliserais `instanceof`, mais TypeScript génère une erreur lorsque j'essaie de faire ceci :
```typescript
function processAnimals(animals: Animal[]) {
for (const animal of animals) {
if (animal instanceof Dog) { // Erreur : 'Dog' fait référence à une valeur, mais est utilisé comme un type ici
animal.bark();
} else if (animal instanceof Cat) {
animal.meow();
}
}
}
```
TypeScript dit : `'Dog' fait référence à une valeur, mais est utilisé comme un type ici`
No answers yet.
Connectez-vous pour laisser une réponse
Blogs