تحقق من نوع الفئة في 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' refers to a value, but is being used