Klassentyp-Prüfung in TypeScript: Wie bestimmt man, ob ein Objekt eine Instanz einer bestimmten Klasse ist?
Hallo zusammen! Ich habe kürzlich angefangen, TypeScript zu lernen, und bin auf ein Problem bei der Laufzeit-Typüberprüfung gestoßen.
Ich habe eine Klassenhierarchie:
```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!");
}
}
```
Ich schreibe eine Funktion, die ein Array `Animal[]` akzeptiert und verschiedene Aktionen für Hunde und Katzen ausführen möchte. In JavaScript würde ich `instanceof` verwenden, aber TypeScript gibt einen Fehler aus, wenn ich das versuche:
```typescript
function processAnimals(animals: Animal[]) {
for (const animal of animals) {
if (animal instanceof Dog) { // Fehler: 'Dog' refers to a value, but is being used as a type here
animal.bark();
} else if (animal instanceof Cat) {
animal.meow();
}
}
}
```
TypeScript sagt: `'Dog' refers to a value, but is being used
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen