0Pricing
TypeScript Academy · درس

الأنواع المُحوَّلة: تحويل أنواع الكائنات

كرّروا على المفاتيح لإنشاء أشكال أنواع جديدة

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

مرحبًا

تكرّر الأنواع المُحوَّلة على مفاتيح نوع لإنشاء أنواع جديدة بخصائص محوَّلة. وهي أساس Partial وReadonly وRecord والعديد من الأدوات الأخرى.

البنية الأساسية للأنواع المُحوَّلة

استخدموا `[K in keyof T]` للتكرار على جميع مفاتيح T وإنشاء نوع جديد.
type Copy<T> = { [K in keyof T]: T[K] };
type UserCopy = Copy<User>; // same as User

جعل جميع الخصائص اختيارية

بهذه الطريقة يُنفَّذ Partial — أضيفوا ? إلى كل خاصية.
type Partial<T> = { [K in keyof T]?: T[K] };
type PartialUser = Partial<User>;

جعل جميع الخصائص للقراءة فقط

أضيفوا `readonly` إلى كل خاصية في النوع المُحوَّل.
type Readonly<T> = { readonly [K in keyof T]: T[K] };
type FrozenUser = Readonly<User>;

تحويل أنواع القيم

غيّروا نوع القيمة لكل خاصية مع الإبقاء على المفاتيح.
type Stringify<T> = { [K in keyof T]: string };
type StringUser = Stringify<User>; // all values are string

تصفية الخصائص باستخدام never

استخدموا شرطًا في موضع القيمة، وصفّوا باستخدام never عبر إعادة تعيين المفاتيح.
type OnlyStrings<T> = {
  [K in keyof T as T[K] extends string ? K : never]: T[K]
};

Record<K, V>

ينشئ Record نوع كائن بمفاتيح وأنواع قيم محددة.
type Record<K extends string | number | symbol, V> = { [P in K]: V };
const roles: Record<'admin' | 'user', boolean> = { admin: true, user: false };

تحافظ الأنواع المُحوَّلة على الاختيارية

تحافظ الأنواع المُحوَّلة افتراضيًا على معدلات الاختيارية وreadonly من النوع المصدر.
interface User { id: number; name?: string; }
type Copy<T> = { [K in keyof T]: T[K] };
type C = Copy<User>; // id: number; name?: string (preserved)

إعادة تعيين المفاتيح باستخدام as

أعيدوا تعيين المفاتيح إلى أسماء جديدة باستخدام `as` في النوع المُحوَّل.
type Getters<T> = {
  [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K]
};

التكرار على اتحاد

حوّلوا نوع اتحاد بدلًا من keyof T لإنشاء أنواع كائنات من الاتحادات.
type Flags = { [K in 'option1' | 'option2' | 'option3']: boolean };

الجمع بين الأنواع المُحوَّلة والشرطية

تتآلف الأنواع المُحوَّلة والأنواع الشرطية طبيعيًا لإنتاج تحويلات متقدمة.
type NullableValues<T> = { [K in keyof T]: T[K] | null };

تحقّق سريع

ماذا ينتج `{ [K in keyof T]?: T[K] }`؟

مراجعة

تكرّر الأنواع المُحوَّلة على المفاتيح لإنشاء أنواع جديدة. ويمكنها إضافة readonly و? أو إزالتهما، وتحويل أنواع القيم، وتصفية المفاتيح باستخدام never، وإعادة تعيين المفاتيح باستخدام as. وهي أساس جميع أنواع الأدوات المضمَّنة في TypeScript.

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

هل درس «الأنواع المُحوَّلة: تحويل أنواع الكائنات» مجاني؟

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

ماذا ستتعلم في «الأنواع المُحوَّلة: تحويل أنواع الكائنات»؟

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

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

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

كم من الوقت يستغرق درس «الأنواع المُحوَّلة: تحويل أنواع الكائنات»؟

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

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

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

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

  1. الأنواع المُحوَّلة: تحويل أنواع الكائنات
  2. المعدّلات في الأنواع المُحوَّلة: ‏readonly و?
  3. أنواع القوالب الحرفية: أنماط السلاسل النصية
  4. إعادة تعيين المفاتيح باستخدام as في الأنواع المُحوَّلة
← العودة إلى TypeScript Academy