TypeScript में क्लास टाइप की जाँच: कैसे पता करें कि कोई ऑब्जेक्ट किसी विशिष्ट क्लास का इंस्टेंस है?
सभी को नमस्ते! मैंने हाल ही में TypeScript सीखना शुरू किया है और रनटाइम के दौरान टाइप चेक करने में एक समस्या का सामना किया।
मेरे पास क्लासेज़ का एक पदानुक्रम है:
```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!");
}
}
```
मैं एक फंक्शन लिख रहा हूँ जो `Animal[]` ऐरे लेता है और कुत्तों और बिल्लियों के लिए अलग-अलग कार्य करना चाहता है। JavaScript में मैं `instanceof` का उपयोग करता, लेकिन TypeScript एरर देता है जब मैं ऐसा करने की कोशिश करता हूँ:
```typescript
function processAnimals(animals: Animal[]) {
for (const animal of animals) {
if (animal instanceof Dog) { // एरर: 'Dog' एक वैल्यू को संदर्भित करता है, लेकिन यहाँ इसे टाइप के रूप में उपयोग किया जा रहा है
animal.bark();
} else if (animal instanceof Cat) {
animal.meow();
}
}
}
```
TypeScript कहता है: `'Dog' एक वैल्यू को संदर्भित करता है, लेकिन यहाँ इसे टाइप के रूप में उपयोग किया जा रहा है`