Avatar ·

تحقق من نوع الفئة في 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