الدرس 10 من 10

أنواع الوعود

هدف الدرس

انتظار له نوع

01

الشرح

الدالة async تُرجع وعدًا دائمًا: ناتج fetchUser(1) ليس مستخدمًا بل Promise<...>. ولهذا لا يمرّ نسيان await: fetchUser(1).email خطأ ترجمة، فالوعد لا بريد له.

وحين لا تصدّر مكتبةٌ نوع ناتجها فاشتقّه: ReturnType<typeof fetchUser> يعطيك الوعد، وAwaited تفكّه إلى ما بداخله.

وPromise.all تحفظ نوع كل موضع: const [user, orders] = await Promise.all([fetchUser(id), fetchOrders(id)]) يعطي كل متغيّر نوعه. والطلبان يجريان معًا، فتنتظر بقدر الأبطأ منهما لا بمجموعهما.

02

المطلوب

عرّف User بـAwaited<ReturnType<typeof fetchUser>>، واكتب loadSummary(id: number): Promise<Summary> تطلب المستخدم وطلباته معًا بـPromise.all، وتُرجع { user, spent } حيث spent مجموع total.

معايير التصحيح

5 معايير
  1. لا أخطاء أنواع
  2. الملخّص صحيح
  3. الطلبان يجريان معًا
  4. User هو ما بداخل الوعد
  5. ولا يقبل كائنًا ناقصًا
main.ts
المخرجاتTypeScript 5.9

جارٍ تحميل مترجم TypeScript… مرّة واحدة ثم يحفظه المتصفح.

–/5

يبدأ الفحص حين تجهز البيئة.

5 معايير في بطاقة «المطلوب».