ما هو التحويل (Casting)؟
أحيانًا تعرف نوع قيمة أكثر مما يعرفه TypeScript — التحويل يخبره بنوعها
الفعلي بكلمة as:
let value: unknown = "مرحبًا";
let length = (value as string).length; // 6
مثال شائع: DOM
getElementById يُرجع HTMLElement | null عامًّا — نحدّد النوع الدقيق:
const input = document.getElementById("name") as HTMLInputElement;
console.log(input.value); // value متاح الآن
صيغة الأقواس الزاوية (بديلة)
let value: unknown = "نص";
let len = (<string>value).length;
⚠️ هذه الصيغة لا تعمل في ملفات
.tsx(تتعارض مع JSX) — استخدمasدائمًا في React.
as const
تحوّل القيمة إلى نوعها الحرفي الثابت (readonly):
let role = "admin" as const; // النوع "admin" لا string
const config = {
mode: "dark",
size: 10,
} as const; // كل الخصائص readonly وحرفية
التحويل ليس تحويلًا فعليًّا
as يؤثّر على الأنواع وقت الترجمة فقط، لا يغيّر القيمة وقت التشغيل:
let num = "123" as unknown as number; // خطأ منطقي!
// num ما زال نصًّا "123" فعليًّا، التحويل وهمي
لتحويل فعلي استخدم دوال JavaScript: Number("123"), String(5).
أخطاء شائعة
- استخدام
asلتسكيت الأخطاء بقوّة فينهار البرنامج وقت التشغيل. - ظنّ أن
as numberيحوّل النص إلى رقم فعليًّا — لا، استخدمNumber().
🎯 التالي: الأصناف (Classes) ومُعدِّلات الوصول.