اتحادات الأنواع المميّزة لمطابقة الأنماط بأمان
أضيفوا حقلًا حرفيًا مشتركًا إلى أعضاء الاتحاد لضمان أمان الأنواع
اتحادات الأنواع المميّزة لمطابقة الأنماط بأمان درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.
مرحبًا
الخاصية المميّزة
type Circle = { kind: 'circle'; radius: number };
type Square = { kind: 'square'; side: number };
type Shape = Circle | Square;التضييق باستخدام عمليات التحقق في if
function area(shape: Shape): number {
if (shape.kind === 'circle') {
return Math.PI * shape.radius ** 2;
}
return shape.side ** 2; // narrowed to Square
}التضييق باستخدام switch/case
function describe(shape: Shape): string {
switch (shape.kind) {
case 'circle': return `Circle r=${shape.radius}`;
case 'square': return `Square s=${shape.side}`;
}
}التحقق من اكتمال الحالات باستخدام never
function area(shape: Shape): number {
switch (shape.kind) {
case 'circle': return Math.PI * shape.radius ** 2;
case 'square': return shape.side ** 2;
default:
const _exhaustive: never = shape;
throw new Error('Unhandled shape');
}
}نمط Result
type Ok<T> = { ok: true; value: T };
type Err = { ok: false; error: string };
type Result<T> = Ok<T> | Err;نمط Action (على طريقة Redux)
type Action =
| { type: 'INCREMENT'; amount: number }
| { type: 'DECREMENT'; amount: number }
| { type: 'RESET' };خصائص مميّزة متعددة
type AdminUser = { role: 'admin'; permissions: string[] };
type RegularUser = { role: 'user'; credits: number };
type User = AdminUser | RegularUser;الاتحادات غير المميّزة قابلة للتضييق أيضًا
type StringOrArr = string | string[];
function flatten(val: StringOrArr): string[] {
return Array.isArray(val) ? val : [val];
}الاتحادات المميّزة مقابل تسلسلات الفئات
من الواقع العملي: اتحاد استجابة HTTP
type ApiState<T> =
| { status: 'loading' }
| { status: 'success'; data: T }
| { status: 'error'; message: string };تحقق سريع
مراجعة
تعلم TypeScript مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 101
- الدروس
- 352
الأسئلة الشائعة
هل درس «اتحادات الأنواع المميّزة لمطابقة الأنماط بأمان» مجاني؟
نعم — نص درس «اتحادات الأنواع المميّزة لمطابقة الأنماط بأمان» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.
ماذا ستتعلم في «اتحادات الأنواع المميّزة لمطابقة الأنماط بأمان»؟
أضيفوا حقلًا حرفيًا مشتركًا إلى أعضاء الاتحاد لضمان أمان الأنواع تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟
لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «اتحادات الأنواع المميّزة لمطابقة الأنماط بأمان»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟
نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أنواع الاتحاد: A أو B
- أنواع التقاطع: A وB
- اتحادات الأنواع المميّزة لمطابقة الأنماط بأمان
- أنماط عملية باستخدام الاتحاد والتقاطع