Avatar ·

كيفية التحقق من نوع الكلاس في 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؟ }); ``` المشكلة هي أن