كيفية معرفة نوع المتغير في 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، والأنواع موجودة فقط في مرحلة