Avatar ·

كيفية معرفة نوع المتغير في TypeScript: typeof وinstanceof والتحقق المخصص

مرحبًا بالجميع! لقد بدأت للتو في تعلم TypeScript وواجهت مشكلة: كيف يمكنني معرفة نوع المتغير أثناء تشغيل البرنامج؟ في JavaScript العادي كنت أستخدم `typeof`، لكن في TS لا يعمل هذا دائمًا كما أتوقع. إليك مثال على الكود الذي يحيرني: ```typescript let value: string | number = "hello"; // أحاول التحقق من النوع if (typeof value === "string") { console.log(value.toUpperCase()); // يعمل } value = 42; if (typeof value === "number") { console.log(value.toFixed(2)); // يعمل } // لكن مع الكائنات الأمر أكثر تعقيدًا interface User { name: string; age: number; } interface Admin { name: string; role: string; } function processUser(user: User | Admin) { // كيف يمكنني التحقق هنا هل هو User أم Admin؟ if (typeof user === "object") { // هذا لا يساعد // كيف أحصل على النوع المحدد؟ } } ``` أفهم أن TypeScript هو إضافة فوق JS، والأنواع موجودة فقط في مرحلة