0Pricing
TypeScript Academy · درس

‏Readonly وExclude وExtract وNonNullable

طبّقوا مزيدًا من أنواع الأدوات لدعم عدم القابلية للتغيير والتصفية

‏Readonly وExclude وExtract وNonNullable درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

مرحبًا

تتضمن المكتبة القياسية لـ TypeScript عدة أنواع أدوات تتجاوز Partial وRequired وPick وOmit. يغطي هذا الدرس Readonly وExclude وExtract وNonNullable.

Readonly<T>

يجعل جميع خصائص T للقراءة فقط، ويمنع إعادة إسناد أي خاصية بعد الإنشاء.
interface Config { host: string; port: number; }
const cfg: Readonly<Config> = { host: 'localhost', port: 3000 };
// cfg.host = 'remote'; // Error!

Exclude<T, U>

يزيل من اتحاد T جميع الأعضاء القابلة للإسناد إلى U.
type Status = 'pending' | 'active' | 'banned' | 'deleted';
type ActiveStatus = Exclude<Status, 'banned' | 'deleted'>;
// 'pending' | 'active'

Extract<T, U>

يُبقي من اتحاد T الأعضاء القابلة للإسناد إلى U فقط. وهو عكس Exclude.
type StringOrNumber = string | number | boolean;
type JustStrNum = Extract<StringOrNumber, string | number>;
// string | number

NonNullable<T>

يزيل null وundefined من T.
type MaybeString = string | null | undefined;
type DefinitelyString = NonNullable<MaybeString>; // string

ReturnType<T>

يستخرج نوع القيمة المرجعة من نوع الدالة T.
function fetchUser() { return { id: 1, name: 'Alice' }; }
type User = ReturnType<typeof fetchUser>; // { id: number; name: string }

Parameters<T>

يستخرج أنواع معاملات الدالة في صورة صفيف tuple.
function add(a: number, b: number): number { return a + b; }
type AddParams = Parameters<typeof add>; // [number, number]

InstanceType<T>

يحصل على نوع الكائن الذي ينتجه نوع دالة المُنشئ.
class HttpClient { get(url: string) { return fetch(url); } }
type Client = InstanceType<typeof HttpClient>; // HttpClient

Awaited<T>

يفك تغليف أنواع Promise المتداخلة.
type A = Awaited<Promise<string>>;          // string
type B = Awaited<Promise<Promise<number>>>;  // number

استخدام عدة أدوات معًا

سلسِل أنواع الأدوات لإجراء تحويلات معقدة.
type SafeInput<T> = Readonly<Partial<NonNullable<T>>>;

أنواع الأدوات ليست سوى أسماء مستعارة للأنواع

يُنفَّذ كل نوع أداة مضمّن باستخدام الأنواع المُعيَّنة والأنواع الشرطية وinfer. ويمكنك إنشاء أنواعك الخاصة.

تحقق سريع

ماذا ينتج `Exclude<'a' | 'b' | 'c', 'b'>`؟

مراجعة

يمنع Readonly التعديل. ويزيل Exclude أعضاء الاتحاد. ويُبقي Extract الأعضاء المطابقة. ويزيل NonNullable القيم القابلة لأن تكون null أو undefined. أما ReturnType وParameters وInstanceType فتستخرج معلومات أنواع الدوال والفئات.

الأسئلة الشائعة

هل درس «‏Readonly وExclude وExtract وNonNullable» مجاني؟

نعم — نص درس «‏Readonly وExclude وExtract وNonNullable» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «‏Readonly وExclude وExtract وNonNullable»؟

طبّقوا مزيدًا من أنواع الأدوات لدعم عدم القابلية للتغيير والتصفية تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟

لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «‏Readonly وExclude وExtract وNonNullable»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟

نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ‏Partial وRequired: تبديل الاختيارية
  2. ‏Pick وOmit: اختيار الخصائص
  3. ‏Record: ربط المفاتيح بأنواع القيم
  4. ‏Readonly وExclude وExtract وNonNullable
← العودة إلى TypeScript Academy