مكتبة TypeScript القياسية: نظرة شاملة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مكتبة TypeScript القياسية: نظرة شاملة



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



1. أنواع البيانات المضمنة



تتضمن مكتبة TypeScript القياسية جميع الأنواع الأساسية في JavaScript، ولكنها تضيف إليها كتابة الأنواع الصارمة وتجريدات جديدة:



  • number، string، boolean — الأنواع البدائية؛
  • null و undefined — قيم خاصة؛
  • any — تعطيل التحقق من الأنواع؛
  • unknown — بديل آمن لـ any؛
  • never — نوع للدوال التي لا تنتهي أبداً؛
  • void — عدم وجود قيمة مرتجعة.


// مثال على استخدام الأنواع المضمنةlet age: number = 25;let name: string = "آنا";let isActive: boolean = true;let data: unknown = { id: 1 };let error: never = (() => { throw new Error("خطأ"); })();


2. الأنواع المساعدة (Utility Types)



توفر TypeScript مجموعة من الأنواع المساعدة المضمنة التي تسمح بتحويل الأنواع الموجودة دون الحاجة لكتابة تركيبات معقدة:



  • Partial<T> — يجعل جميع حقول النوع T اختيارية؛
  • Required<T> — يجعل جميع الحقول إلزامية؛
  • Readonly<T> — يمنع تعديل الحقول؛
  • Pick<T, K> — يختار المفاتيح المحددة من النوع؛
  • Omit<T, K> — يستثني المفاتيح المحددة؛
  • Record<K, T> — ينشئ نوعاً بمفاتيح K وقيم T.


interface User {  id: number;  name: string;  email: string;}

// نجعل جميع الحقول اختياريةtype PartialUser = Partial<User>;

// نختار فقط id و nametype UserPreview = Pick<User, "id" | "name">;

// ننشئ قاموساًtype UserMap = Record<string, User>;


3. العمل مع المجموعات: Map, Set, WeakMap, WeakSet



تتضمن المكتبة القياسية إصدارات مكتوبة (Typed) من مجموعات ES6+. يقوم TypeScript تلقائياً باستنتاج الأنواع عند استخدام هذه الهياكل:



  • Map<K, V> — مجموعة مفتاح-قيمة؛
  • Set<T> — مجموعة من القيم الفريدة؛
  • WeakMap<K extends object, V> — نظير Map مع مراجع "ضعيفة"؛
  • WeakSet<T extends object> — نظير Set للكائنات.


// Map مكتوبconst userRoles = new Map<number, string>();userRoles.set(1, "admin");userRoles.set(2, "user");

// Set مكتوبconst uniqueIds = new Set<number>([1, 2, 3, 3]); // {1, 2, 3}


4. الوعود (Promises) والمعالجة غير المتزامنة



يدعم TypeScript بشكل كامل البرمجة غير المتزامنة من خلال Promise<T> والكلمات المفتاحية async/await. تسمح كتابة الأنواع للوعود بتحديد نوع البيانات التي سيتم إرجاعها بدقة:



async function fetchUser(id: number): Promise<User> {  const response = await fetch(`/api/users/${id}`);  return response.json(); // نوع القيمة المرتجعة هو User}

// الاستخدامfetchUser(1).then(user => { console.log(user.name); // name — نص (string)});


5. العمل مع DOM وواجهات برمجة التطبيقات (APIs) للمتصفح



تتضمن مكتبة TypeScript القياسية كتابة أنواع كاملة لواجهة DOM API. يتيح ذلك العمل بأمان مع العناصر والأحداث وكائنات المتصفح الأخرى:



توصيات