Tiplangan Todo List'dan to'liq generic/diskriminatsiyalangan union asosidagi e-commerce backend tip tizimigacha progressiv 6 ta loyiha — har biri talablar, konseptlar va test/debugging mashqlari bilan.
Handbook davomida o'rgangan barcha TypeScript bilimlarini birlashtiruvchi progressiv loyihalar.
Talablar: Todo interfeysi, add/remove/toggle funksiyalari, barchasi to'g'ri tiplangan. Konseptlar: interfeyslar, massivlar, funksiya tiplari.
Talablar: Diskriminatsiyalangan union (Circle, Square, Rectangle), exhaustiveness checking bilan getArea funksiyasi. Konseptlar: diskriminatsiyalangan union, switch, never.
Talablar: fetchData<T>(url: string): Promise<T> generic funksiyasi, ApiResponse<T> interfeysi bilan. Konseptlar: generics, utility types (Partial update funksiyalari uchun).
Talablar: "idle" | "loading" | "success" | "error" holatlariga ega diskriminatsiyalangan union, har biriga mos komponent render mantig'i (konseptual, UI'siz). Konseptlar: diskriminatsiyalangan union, type narrowing.
Talablar: Generic Validator<T> interfeysi, turli maydon turlari (string, number, email) uchun validatorlar, xatolarni to'plovchi tizim. Konseptlar: generics, utility types, function types.
Talablar: User, Product kabi "model" interfeyslaridan, Partial/Pick/Omit yordamida CreateUserInput, UpdateUserInput kabi turli maqsadli turlarni avtomatik hosil qilish. Konseptlar: utility types, mapped types.
Product, Order, User, CartItem interfeyslari (PART 3, 7)OrderStatus (pending/shipped/delivered/cancelled) va har biriga mos qo'shimcha ma'lumot (PART 14)Repository<T> interfeysi (findById, create, update, delete metodlari) (PART 11)CreateProductInput, UpdateProductInput kabi turlar (PART 12)type AppEvent = { type: "order.created"; orderId: string } | ... (PART 14)Task: Yuqoridagi Final Project talablarini to'liq amalga oshiring — barcha interfeyslar, diskriminatsiyalangan union'lar, generic Repository va utility type'lar bilan (implementatsiyasiz, faqat tip darajasida).
Stsenariy: Repository<T> interfeysini amalga oshirganingizda, findById metodi T | undefined qaytarishi kerak (chunki element topilmasligi mumkin), lekin siz uni T deb yozgansiz va endi barcha joylarda "obyekt undefined bo'lishi mumkin" degan runtime xatolarga duch kelmoqdasiz.
Your Task: Bu muammoni qanday tuzatish kerak?
<details> <summary>Solution</summary> ```typescript interface Repository<T> { findById(id: string): T | undefined; // to'g'ri — topilmasligi mumkinligini aks ettiradi create(data: Omit<T, "id">): T; update(id: string, data: Partial<T>): T | undefined; delete(id: string): boolean; } ``` Bu — `findById`ni chaqirgan har bir joyda, TypeScript dasturchini natijani ishlatishdan oldin `undefined`ligini tekshirishga "majburlaydi", bu esa PART 1'dagi `strictNullChecks` tamoyilining amaliy qo'llanilishi. </details>Capstone loyihalar — oddiy tiplangan Todo List'dan to'liq, generic va diskriminatsiyalangan union'larga asoslangan e-commerce backend tip tizimigacha, handbookda o'rgangan barcha TypeScript tushunchalarini (asosiy tiplar, interfeyslar, generiklar, utility types, advanced types, diskriminatsiyalangan union'lar) birlashtiradi.
Repository<T> — real backend arxitekturasining asosiy patternlaridan biriundefined bo'lish ehtimolini) to'g'ri aks ettirishi kerakcode.textTEXT🟢 Todo List, Shape Calculator → interfeyslar, diskriminatsiyalangan union🟡 API Client, State Machine → generics, narrowing🔴 Form Validation, Mini ORM → generics + utility types🟣 Final Project → Barcha konseptlar birgalikda
Mavzu bo‘yicha tushunchalaringizni interaktiv test orqali sinovdan o‘tkazing va natijalarni bilib oling.
Darslikda o‘rganilgan qoidalarga asosan real kod yozing, testlardan o‘tkazing va yechimlarni mustahkamlang.
Test Sinovi
Hali topshirilmagan (kamida 75% kerak)
Dars sifati va mazmunini yaxshilash uchun o‘z haqqoniy bahoingizni qoldiring.
Mavzuni to‘liq o‘zlashtirish uchun test sinovi, amaliy kodlash va bog‘liq darslar
O‘z bilimingizni interaktiv test savollari orqali tekshiring va darhol xatolarni tahlil qiling.
Nazariyani real kod yozish bilan mustahkamlang, avtomatik testlardan o‘ting va XP to‘plang.
Kurs bo‘yicha keyingi va bog‘liq mavzular: