Išplėsk Cosmos — iššūkiai
Baigiamasis darbas — išplėsk Cosmos savarankiškai, TypeScript versijoje, tais pačiais šablonais. Pasirink bent vieną iššūkį. Kiekvienas remiasi tuo, ką jau moki — ir prieš rašydamas kodą privalai atsakyti: kokie tipai keičiasi?
Iššūkis A — naujas rūšiavimo stulpelis (lengvas).
Pridėk kolekcijos rikiavimą pagal išsaugojimo datą (savedAt).
- Keiti:
SortKeysąjungą ('title' | 'date' | 'rating' | 'savedAt'),getFilteredSavedswitch. - Tipų nauda: vos pridėjus
'savedAt'įSortKey,assertNevernurodo kiekvienąswitch, kurį reikia atnaujinti. Kompiliatorius — tavo darbų sąrašas.
Iššūkis B — kito API pakeitimas (vidutinis). Pakeisk NASA APOD kitu viešu API (pvz. „Art Institute of Chicago" paveikslų).
- Keiti:
Apodtipą (naujas šaltinis — nauja forma),isApodtipo sargą,api.tsURL. - Tipų nauda: kompiliatorius parodys kiekvieną vietą, kur senoji forma nebetinka. „Pakeisk tipą, sek klaidas" — visa migracija per klaidų sąrašą.
Iššūkis C — nauja tipizuota funkcija (sunkus). Pridėk „žymų filtrą": paspaudus žymą kolekcijoje, rodyk tik tas nuotraukas.
- Keiti:
AppState(naujasactiveTag: string | null), naują veiksmą (setActiveTag),getFilteredSavedlogiką, naują UI. - Tipų nauda:
Readonly<AppState>neleis vaizdui keistiactiveTagtiesiogiai — priverstinai per veiksmą.
Kiekvienam iššūkiui prieš kodą atsakyk keturis klausimus: (1) kokie tipai keičiasi? (2) kur reikia tipo sargo? (3) kokie switch'ai/assertNever suges (ir tai gerai)? (4) ar būseną keiti tik per veiksmą? Jei atsakai — architektūrą ir tipus supratai.
Patarimas. Naudok kompiliatorių kaip vedlį: pakeisk tipą pirma, paleisk
npm run typecheck, ir taisyk klaidas po vieną, kol švaru. Tai — „tipais valdoma" plėtra: kompiliatorius pats parodo, ką dar reikia padaryti. Vanilla versijoje tektų medžioti ranka.