الدرس 10 من 10
أنواع الوعود
- 15 دقيقة
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
انتظار له نوع
الشرح
الدالة async تُرجع وعدًا دائمًا: ناتج fetchUser(1) ليس مستخدمًا بل Promise<...>. ولهذا لا يمرّ نسيان await: fetchUser(1).email خطأ ترجمة، فالوعد لا بريد له.
وحين لا تصدّر مكتبةٌ نوع ناتجها فاشتقّه: ReturnType<typeof fetchUser> يعطيك الوعد، وAwaited تفكّه إلى ما بداخله.
وPromise.all تحفظ نوع كل موضع: const [user, orders] = await Promise.all([fetchUser(id), fetchOrders(id)]) يعطي كل متغيّر نوعه. والطلبان يجريان معًا، فتنتظر بقدر الأبطأ منهما لا بمجموعهما.
المطلوب
عرّف User بـAwaited<ReturnType<typeof fetchUser>>، واكتب loadSummary(id: number): Promise<Summary> تطلب المستخدم وطلباته معًا بـPromise.all، وتُرجع { user, spent } حيث spent مجموع total.
معايير التصحيح
5 معايير- لا أخطاء أنواع
- الملخّص صحيح
- الطلبان يجريان معًا
- User هو ما بداخل الوعد
- ولا يقبل كائنًا ناقصًا