EduFlow
أنماط TypeScript المتقدّمة

اختبار الوحدة: الـ Generics بعمق

خمسة أسئلة عن هذه الوحدة. أجب عنها كلها، ثم شاهد نتيجتك وسبب صحة كل إجابة أو خطئها.

السؤال 1 من 5

أيّ توقيع يجعل firstWhere(orders, (o) => o.status === 'shipped') تُعيد Order | undefined، وfirstWhere(products, …) تُعيد Product | undefined، مع تحديد نوع o في الـ callback؟

السؤال 2 من 5

ما نوع t.value؟

TypeScript
function tag<T>(value: T) {
  return { value };
}
const t = tag('shipped');
السؤال 3 من 5

يجب أن تُرفض setDefault(['standard', 'express'], 'overnight') لأن 'overnight' ليست أحد الخيارات. أيّ توقيع يفعل ذلك؟

السؤال 4 من 5

مستدعو عميل Cartwheel يكتبون api.get<Order>('/orders/1042') في كل مكان، وفي الأسبوع الماضي كتب أحدهم api.get<Order[]>('/orders/1042'). ما الإصلاح الأفضل؟

السؤال 5 من 5

تُستدعى function useQuery<TData, TKey extends string>(key: TKey, fetcher: () => Promise<TData>) هكذا useQuery<Order>('order-1042', loadOrder) فتفشل مع “Expected 2 type arguments, but got 1”. ما الإصلاح الأفضل في موضع الاستدعاء؟

5 أسئلة بلا إجابة