كيفية التحقق من نوع الكلاس في TypeScript: instanceof، type guards وحماية الأنواع
مرحباً بالجميع! أنا مبتدئ في TypeScript وأواجه مشكلة في التحقق من أنواع الكلاسات. لدي تسلسل هرمي للكلاسات: كلاس أساسي `Animal` وكلاسين فرعيين — `Dog` و `Cat`. لكل منهما دوال فريدة خاصة به: `bark()` لدى Dog و `meow()` لدى Cat.
أتلقى مصفوفة من الكائنات من النوع `Animal[]` من مصدر خارجي (مثل API)، وأحتاج إلى تحديد أي كلاس ينتمي إليه كل كائن لاستدعاء الدالة المناسبة.
إليك مثال على الكود:
```typescript
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
}
class Dog extends Animal {
bark() {
console.log(`${this.name} says: Woof!`);
}
}
class Cat extends Animal {
meow() {
console.log(`${this.name} says: Meow!`);
}
}
const animals: Animal[] = [new Dog('Rex'), new Cat('Molly')];
animals.forEach(animal => {
// كيف أتحقق أن animal هو Dog أو Cat؟
// if (animal instanceof Dog) { ... } — هل هذا يعمل؟
// أم يجب استخدام typeof؟
});
```
المشكلة هي أن