Tema
/
Interneto svetainių kliento dalies kūrimas JS
📖 Teorija

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: SortKey sąjungą ('title' | 'date' | 'rating' | 'savedAt'), getFilteredSaved switch.
  • Tipų nauda: vos pridėjus 'savedAt' į SortKey, assertNever nurodo 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: Apod tipą (naujas šaltinis — nauja forma), isApod tipo sargą, api.ts URL.
  • 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 (naujas activeTag: string | null), naują veiksmą (setActiveTag), getFilteredSaved logiką, naują UI.
  • Tipų nauda: Readonly<AppState> neleis vaizdui keisti activeTag tiesiogiai — 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.