0Pricing
TypeScript Academy · درس

‏Partial وRequired: تبديل الاختيارية

اجعلوا جميع الخصائص اختيارية أو مطلوبة دفعة واحدة

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

مرحبًا

يجعل Partial جميع الخصائص اختيارية، بينما يجعل Required جميع الخصائص مطلوبة. وهما أكثر أنواع الأدوات استخدامًا لمعالجة البيانات بمرونة.

Partial<T>

يجعل Partial كل خاصية في T اختيارية. ويفيد ذلك في عمليات التحديث أو التصحيح التي لا تتوفر فيها جميع الحقول.
interface User { id: number; name: string; email: string; }
type PartialUser = Partial<User>;
// { id?: number; name?: string; email?: string; }

Partial في دوال التحديث

استخدم Partial عند تنفيذ دوال التحديث أو الدمج التي تقبل الحقول التي تغيّرت فقط.
function updateUser(id: number, changes: Partial<User>): User {
  const existing = findUser(id)!;
  return { ...existing, ...changes };
}

Required<T>

يزيل Required جميع المُعدِّلات الاختيارية، فيجعل كل خاصية إلزامية.
type RequiredUser = Required<User>;
// All properties are now required — including those that were optional

استخدام Required للتحقق من الإعدادات

استخدم Required بعد دمج القيم الافتراضية لضمان وجود جميع قيم الإعدادات.
interface Config { host?: string; port?: number; }
const defaults: Required<Config> = { host: 'localhost', port: 3000 };
function createConfig(opts: Config): Required<Config> {
  return { ...defaults, ...opts };
}

كيفية تنفيذ Partial

يستخدم Partial نوعًا مُعيَّنًا مع المُعدِّل +?.
type Partial<T> = { [K in keyof T]?: T[K] };
// Equivalent to: { [K in keyof T]+?: T[K] }

كيفية تنفيذ Required

يستخدم Required نوعًا مُعيَّنًا مع المُعدِّل -?.
type Required<T> = { [K in keyof T]-?: T[K] };

Partial العميق

إن Partial المضمّن سطحي. أما الكائنات المتداخلة فتحتاج إلى DeepPartial تكراري.
type DeepPartial<T> = {
  [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K]
};

دمج Partial وRequired

اجعل بعض الحقول مطلوبة مع إبقاء الحقول الأخرى اختيارية باستخدام التقاطع.
// id required, everything else optional
type UpsertUser = Required<Pick<User, 'id'>> & Partial<Omit<User, 'id'>>;

Partial مقابل الخصائص الاختيارية في الواجهة

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

استنتاج الأنواع مع Partial

يضيّق TypeScript خصائص Partial بشكل صحيح، لذا قد يعيد الوصول إليها القيمة T[K] | undefined.
function show(u: Partial<User>) {
  if (u.name !== undefined) {
    console.log(u.name.toUpperCase()); // safe
  }
}

تحقق سريع

أي نوع أداة يجعل جميع خصائص الواجهة مطلوبة، بما في ذلك الخصائص التي كانت اختيارية؟

مراجعة

يجعل Partial جميع الخصائص اختيارية، وهو مفيد للتصحيحات والتحديثات. ويجعل Required جميع الخصائص إلزامية، وهو مفيد للتحقق بعد الدمج. كلاهما سطحي، لذا استخدم إصدارات تكرارية للأنواع المتداخلة.

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

هل درس «‏Partial وRequired: تبديل الاختيارية» مجاني؟

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

ماذا ستتعلم في «‏Partial وRequired: تبديل الاختيارية»؟

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

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

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

كم من الوقت يستغرق درس «‏Partial وRequired: تبديل الاختيارية»؟

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

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

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

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

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