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

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

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

ابدأ الدورة

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



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



ما هي مكتبة TypeScript القياسية؟

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

  • الأنواع الأساسية (string، number، boolean، any، unknown، never، void).
  • الأنواع المساعدة (Partial، Required، Pick، Omit، Record وغيرها).
  • المُزينات (ميزة تجريبية للبرمجة الوصفية).
  • مساحات الأسماء (namespace) والوحدات النمطية.
  • الأنواع المتقدمة (Promise، Map، Set، WeakMap، WeakSet).
  • أنواع العمل مع DOM (تُضمّن عبر lib: ["dom"]).


الأنواع المساعدة: قلب المكتبة

تسمح الأنواع المساعدة بتحويل الأنواع الحالية دون تكرار الكود. دعنا نستعرض الأكثر شيوعاً:



Partial و Required

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

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

// جميع الحقول تصبح إلزامية (إذا كانت اختيارية)type RequiredUser = Required<PartialUser>;


Pick و Omit

interface Product {  id: number;  title: string;  price: number;  description: string;}

// اختيار الحقول المطلوبة فقطtype ProductPreview = Pick<Product, 'id' | 'title'>;

// استبعاد الحقول غير المرغوب فيهاtype ProductWithoutDesc = Omit<Product, 'description'>;


Record و Readonly

// إنشاء كائن بمفاتيح وقيم محددةtype UserRoles = Record<'admin' | 'user' | 'guest', string>;

// جعل جميع الحقول للقراءة فقطtype ReadonlyUser = Readonly<User>;


العمل مع Promise وعدم التزامن

يوفر TypeScript أنواعاً مضمنة للعمل مع الكود غير المتزامن:

async function fetchData(): Promise<string> {  return "تم تحميل البيانات";}

// نوع نتيجة Promisetype DataType = Awaited<ReturnType<typeof fetchData>>; // string


المُزينات: البرمجة الوصفية في TypeScript

المُزينات هي تصريحات خاصة تسمح بتعليق وتعديل الفئات والطرق والخصائص والمعاملات. تُستخدم بشكل نشط في الأطر (Angular، NestJS).



مثال على مُزين فئة

function sealed(constructor: Function) {  Object.seal(constructor);  Object.seal(constructor.prototype);}

@sealedclass Calculator { add(a: number, b: number): number { return a + b; }}


مثال على مُزين طريقة

function log(target: any, key: string, descriptor: PropertyDescriptor) {  const original = descriptor.value;  descriptor.value = function (...args: any[]) {    console.log(`تم استدعاء الطريقة ${key} مع الوسائط: ${args}`);    return original.apply(this, args);  };  return descriptor;}

class UserService { @log getUser(id: number): string { return `المستخدم ${id}`; }}


مساحات الأسماء (Namespaces)

تساعد مساحات الأسماء في تنظيم الكود وتجنب

توصيات