ما هو TypeScript؟

TypeScript هو لغة برمجة مفتوحة المصدر تعتمد على JavaScript وتضيف إليها خصائص إضافية، أهمها التحقق من الأنواع (Type Checking). تم تطوير TypeScript بواسطة Microsoft في 2012، وهو عبارة عن امتداد لـ JavaScript يُستخدم في تطوير التطبيقات الكبيرة والمعقدة.

في حين أن JavaScript هي لغة ديناميكية تُتيح لك كتابة كود مرن بدون التحقق من الأنواع أثناء كتابة الكود، فإن TypeScript يُتيح لك تعريف الأنواع بشكل صريح، مما يساهم في تقليل الأخطاء البرمجية وتحسين كفاءة التطوير.

لماذا نستخدم TypeScript؟

  1. التحقق من الأنواع (Type Checking):
    TypeScript يُمكِّن المطورين من تحديد الأنواع المتوقعة للمتغيرات، الوظائف، والكائنات. هذا يساعد في اكتشاف الأخطاء البرمجية في وقت مبكر أثناء الكتابة، بدلاً من اكتشافها فقط أثناء التنفيذ في JavaScript.
  2. مميزات متقدمة:
    TypeScript يقدم ميزات مثل الأنواع المتقدمة (Advanced Types) و الواجهات (Interfaces) و التوريث (Inheritance) التي تسهل بناء تطبيقات كبيرة ومعقدة.
  3. التكامل مع JavaScript:
    TypeScript يتم تجميعه إلى JavaScript، لذا أي كود مكتوب بـ JavaScript يمكن أن يُنفَّذ باستخدام TypeScript بعد تجميعه، مما يعني أنه يمكنك إضافة TypeScript إلى مشروع JavaScript تدريجيًا.
  4. التطوير الجماعي:
    في مشاريع البرمجة الكبيرة، يمكن أن يكون TypeScript مفيدًا جدًا في تنظيم الكود، خاصةً عند العمل مع فرق كبيرة، حيث أن الأنواع تُساعد على تحديد كل جزء من الكود بشكل أكثر وضوحًا.
  5. الدعم من الأدوات (Tooling Support):
    TypeScript يوفر دعمًا قويًا في الأدوات مثل Visual Studio Code، مما يُسهل كتابة الكود وتصحيحه.

المفاهيم الأساسية في TypeScript

1. الأنواع (Types)

في TypeScript، يمكنك تحديد الأنواع للمتغيرات، الوظائف، المعاملات، إلخ. على سبيل المثال، يمكنك تحديد أن المتغير يجب أن يحتوي على رقم أو نص.

  • الأنواع الأساسية:
    • number: لتمثيل الأرقام.
    • string: لتمثيل النصوص.
    • boolean: لتمثيل القيم المنطقية (true أو false).
    • any: لتحديد نوع غير محدد، يسمح بمرونة أكبر ولكن يقلل من أمان النوع.

مثال:

let age: number = 25; // متغير من نوع number
let name: string = "Ahmad"; // متغير من نوع string
let isActive: boolean = true; // متغير من نوع boolean

2. الواجهات (Interfaces)

الواجهات (Interfaces) تُستخدم لتعريف شكل الكائنات في TypeScript. يمكن تحديد الخصائص و الأنواع التي يجب أن يحتوي عليها الكائن.

مثال:

interface Person {
  name: string;
  age: number;
}

let person: Person = {
  name: "John",
  age: 30
};

في المثال السابق، Person هي واجهة تُحدد أن الكائن يجب أن يحتوي على خاصيتين: name (من نوع string) و age (من نوع number).

3. التوريث (Inheritance)

TypeScript يدعم التوريث (Inheritance) بحيث يمكن لمكون أن يرث خصائص وطرق من مكون آخر باستخدام الكلمة المفتاحية extends.

مثال:

class Animal {
  name: string;

  constructor(name: string) {
    this.name = name;
  }

  speak() {
    console.log(this.name + " makes a sound");
  }
}

class Dog extends Animal {
  breed: string;

  constructor(name: string, breed: string) {
    super(name); // استدعاء الـ constructor من الـ parent class
    this.breed = breed;
  }

  speak() {
    console.log(this.name + " barks");
  }
}

let dog = new Dog("Buddy", "Golden Retriever");
dog.speak(); // "Buddy barks"

في هذا المثال، Dog يرث من Animal ويقوم بتعديل (Overriding) دالة speak.

4. الأنواع المتقدمة (Advanced Types)

  • التعداد (Enums): تستخدم لتمثيل مجموعة من القيم الثابتة.
    مثال: enum Color { Red = "RED", Green = "GREEN", Blue = "BLUE" } let color: Color = Color.Green;
  • الأنواع المتعددة (Union Types): تسمح بتمثيل متغير يمكن أن يكون أكثر من نوع.
    مثال: let value: number | string; value = 42; // صحيح value = "Hello"; // صحيح
  • الأنواع الاختيارية (Optional Types): يمكنك جعل الخصائص اختيارية باستخدام ?.
    مثال: interface Person { name: string; age?: number; // العمر اختياري }

5. الدوال (Functions)

في TypeScript، يمكنك تحديد الأنواع للمعاملات والعودة من الدالة.

مثال:

function greet(name: string): string {
  return "Hello, " + name;
}

let greeting = greet("John");
console.log(greeting); // "Hello, John"

6. الكائنات (Objects)

كما في JavaScript، في TypeScript يمكنك استخدام الكائنات، ولكن مع تحديد الأنواع للخصائص.

مثال:

let person: { name: string, age: number } = {
  name: "Alice",
  age: 25
};

7. التعامل مع الـ Classes

TypeScript يدعم Classes كما هو الحال في JavaScript، ولكن مع إضافة الأنواع الثابتة.

مثال:

class Car {
  make: string;
  model: string;

  constructor(make: string, model: string) {
    this.make = make;
    this.model = model;
  }

  drive() {
    console.log("Driving " + this.make + " " + this.model);
  }
}

let car = new Car("Toyota", "Corolla");
car.drive(); // "Driving Toyota Corolla"

كيفية البدء مع TypeScript؟

  1. تثبيت TypeScript:
    يمكنك تثبيت TypeScript باستخدام npm: npm install -g typescript
  2. إنشاء ملف TypeScript:
    بعد التثبيت، يمكنك كتابة ملفات TypeScript بامتداد .ts.
  3. تحويل TypeScript إلى JavaScript:
    لتحويل الكود من TypeScript إلى JavaScript، يمكنك استخدام المترجم (compiler): tsc myfile.ts
  4. تشغيل الكود:
    بعد تحويل الكود إلى JavaScript، يمكنك تشغيله باستخدام Node.js: node myfile.js

الخاتمة

TypeScript هو أداة قوية لتطوير التطبيقات الحديثة التي تعتمد على JavaScript. بفضل ميزاته مثل التحقق من الأنواع و التوريث و الواجهات، يُسهل TypeScript كتابة كود أكثر أمانًا وتنظيمًا. إذا كنت تعمل على تطبيق كبير أو تعمل مع فرق تطوير متعددة، TypeScript سيجعلك تكتب كودًا أكثر مرونة وسهولة في الصيانة.

Comments

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *