أنماط TypeScript المتقدمة: Generics و Utility Types و Type Guards
أتقن أنماط TypeScript المتقدمة بما في ذلك generics و utility types و type guards. أمثلة حقيقية من قواعد كود React و Node.js واسعة النطاق.
مقدمة
نظام الأنواع في TypeScript أقوى بكثير مما توحي به التعليقات التوضيحية الأساسية للأنواع. عند بناء قواعد كود كبيرة، يمكن للأنماط المتقدمة التقاط فئات كاملة من الأخطاء في وقت الترجمة، وجعل إعادة الهيكلة أكثر أماناً، والعمل كتوثيق حي.
النمط 1: الاتحادات المميزة لآلات الحالة
نمذج الحالة المعقدة مع فحص الشمولية في وقت الترجمة:
// ❌ النهج الساذج: الحقول الاختيارية تؤدي إلى حالات غير صالحة interface ApiState { loading?: boolean; data?: User[]; error?: Error; } // ✅ الاتحاد المميز: فقط الحالات الصالحة قابلة للتمثيل type ApiState<T> = | { status: 'idle' } | { status: 'loading' } | { status: 'success'; data: T } | { status: 'error'; error: Error }; function renderUsers(state: ApiState<User[]>) { switch (state.status) { case 'idle': return <p>انقر لتحميل المستخدمين</p>; case 'loading': return <Spinner />; case 'success': return <UserList users={state.data} />; case 'error': return <ErrorMessage error={state.error} />; } }
النمط 2: أنواع القوالب الحرفية
إنشاء أنواع سلاسل دقيقة:
type EventName<T extends string> = `on${Capitalize<T>}`; type ClickHandler = EventName<'click'>; // "onClick" type ExtractParams<T extends string> = T extends `${string}:${infer Param}/${infer Rest}` ? Param | ExtractParams<Rest> : T extends `${string}:${infer Param}` ? Param : never; type UserRouteParams = ExtractParams<'/users/:userId/posts/:postId'>; // "userId" | "postId"
النمط 3: نمط البناء مع تسلسل الطرق
واجهات برمجة سلسة آمنة من حيث النوع.
النمط 4: عميل API آمن من حيث النوع
توليد الأنواع من مخطط API.
النمط 5: الأنواع الموسومة
منع خلط الأنواع البدائية المتشابهة:
type Brand<T, B> = T & { __brand: B }; type UserId = Brand<string, 'UserId'>; type TaskId = Brand<string, 'TaskId'>; function assignTask(taskId: TaskId, userId: UserId) { /* ... */ } const userId = createUserId('user-123'); const taskId = createTaskId('task-456'); assignTask(taskId, userId); // ✅ صحيح assignTask(userId, taskId); // ❌ خطأ في النوع!
الخلاصة
أنماط TypeScript المتقدمة تحول قاعدة الكود الخاصة بك:
- الاتحادات المميزة تمنع الحالات غير الصالحة
- أنواع القوالب الحرفية تنشئ أنواع سلاسل دقيقة
- أنماط البناء تمكّن واجهات برمجة سلسة وآمنة
- أنواع عميل API تلتقط انتهاكات العقد في وقت الترجمة
- الأنواع الموسومة تمنع خلط البدائيات المتشابهة
الاستثمار في أمان النوع يؤتي ثماره من خلال أخطاء أقل وإعادة هيكلة أكثر أماناً وتجربة مطور أفضل.
مقالات ذات صلة
هندسة الواجهاتقراءة 19 دقيقة
تحسين أداء React: useMemo و useCallback و Code Splitting (2024)
تحسين أداء React مع useMemo و useCallback و code splitting. مقاييس أداء حقيقية وأنماط من تطبيقات إنتاجية واسعة النطاق.
هندسة الواجهاتقراءة 17 دقيقة
إدارة الحالة في React: مقارنة Redux مقابل Zustand مقابل Context API
قارن حلول إدارة الحالة في React: Redux Toolkit و Zustand و Context API. تعلم متى تستخدم كل منها مع أمثلة حقيقية واعتبارات الأداء.
تصميم الخلفيةقراءة 21 دقيقة
REST مقابل GraphQL مقابل gRPC: مقارنة API الكاملة (الأداء وحالات الاستخدام)
قارن REST و GraphQL و gRPC APIs مع معايير الأداء وحالات الاستخدام. تعلم أي نمط API يناسب مشروعك بناءً على خبرة إنتاجية حقيقية.
تصميم الخلفيةقراءة 20 دقيقة
بنية Laravel للمؤسسات: Repository Pattern و Service Layer و DDD
بناء تطبيقات Laravel للمؤسسات مع repository pattern و service layer ومبادئ DDD. أنماط إنتاجية من أنظمة الحكومة والرعاية الصحية.
هندسة الأمانقراءة 20 دقيقة
قائمة فحص أمان API: Rate Limiting والتحقق من المدخلات وتكوين CORS
تأمين APIs مع rate limiting والتحقق من المدخلات وتكوين CORS. قائمة فحص مختبرة إنتاجياً تغطي المصادقة والتشفير ومعالجة الأخطاء.