مقدمة إلى TypeScript: من أين تبدأ في عام 2025
TypeScript هي لغة برمجة طورتها شركة Microsoft، تعمل على توسيع إمكانيات JavaScript بإضافة الكتابة الثابتة (static typing). في عام 2025، لا تزال واحدة من أكثر الأدوات طلباً لتطوير تطبيقات الويب والحلول الخادمة والمشاريع المحمولة. إذا كنت على دراية بـ JavaScript بالفعل أو كنت في بداية مشوارك في البرمجة، فإن TypeScript يساعدك على كتابة كود أكثر موثوقية وقابلية للقراءة والتوسع. في هذه المقالة، سنشرح من أين تبدأ تعلم TypeScript في عام 2025، وسنعرض أمثلة عملية.
لماذا تختار TypeScript؟ أولاً، يكتشف الأخطاء في مرحلة التجميع (compilation) وليس أثناء تشغيل البرنامج. ثانياً، يحسن الإكمال التلقائي في محررات الكود. ثالثاً، يحظى بدعم نشط من المجتمع ويُستخدم في مشاريع مثل Angular وReact وNext.js وNestJS. دعنا نتعمق في التفاصيل.
1. تثبيت وإعداد TypeScript
للبدء، ستحتاج إلى Node.js الإصدار 18 أو أعلى. تأكد من تثبيته عن طريق تشغيل الأمر:
node -vإذا لم يكن Node.js مثبتاً، قم بتنزيله من الموقع الرسمي. ثم قم بتثبيت TypeScript بشكل عام (global) عبر npm:
npm install -g typescriptتحقق من التثبيت:
tsc --versionالآن قم بإنشاء أول برنامج. أنشئ ملفاً باسم hello.ts:
let message: string = "مرحباً، TypeScript 2025!";console.log(message);قم بتجميعه إلى JavaScript:
tsc hello.tsبعد ذلك، سيظهر ملف hello.js يمكن تشغيله عبر Node.js:
node hello.jsلتسهيل العمل، يمكنك إعداد المترجم (compiler) باستخدام ملف tsconfig.json. قم بإنشائه بالأمر:
tsc --initفيه يمكنك تحديد الإعدادات، مثل الوضع الصارم للتحقق من الأنواع (strict mode)، والإصدار المستهدف من ECMAScript، ومسارات الملفات.
2. أساسيات الأنواع: من البسيط إلى المعقد
يقدم TypeScript مجموعة واسعة من أنواع البيانات. لنبدأ بالأساسيات:
- number — الأرقام (الصحيحة والعائمة).
- string — السلاسل النصية.
- boolean — القيم المنطقية (true/false).
- null و undefined — القيم الفارغة.
- any — أي نوع (استخدمه بحذر).
مثال على تعريف المتغيرات مع الأنواع:
let age: number = 25;let name: string = "آنا";let isStudent: boolean = true;let data: any = "يمكن أن يكون أي شيء";أنواع أكثر إثارة للاهتمام هي المصفوفات (arrays) والتوبل (tuples):
let numbers: number[] = [1, 2, 3];let pair: [string, number] = ["عام", 2025];أيضاً، التعدادات (enum) مهمة:
enum Direction { Up = "UP", Down = "DOWN", Left = "LEFT", Right = "RIGHT"}let move: Direction = Direction.Up;في عام 2025، تُستخدم الأنواع الحرفية (literal types) و أنواع الاتحاد (union types) بنشاط. إنها تسمح بتحديد قيمة دقيقة أو اتحاد عدة أنواع:
let status: "active" | "inactive" = "active";let id: number | string = "ABC123";3. الدوال، الواجهات (Interfaces) والكلاسات (Classes)
يقوم TypeScript بكتابة الدوال بشكل صارم. يمكنك تحديد أنواع المعاملات وقيمة الإرجاع:
function greet(name: string): string { return `مرحباً، ${name}!`;}console.log(greet("العالم"));لوصف هيكل الكائنات، استخدم الواجهات (interfaces):
interface User { id: number; name: string; email?: string; // حقل اختياري}const user: User = { id: 1, name: "إيفان" };تعمل الكلاسات في TypeScript كما في ES6+، ولكن مع إ