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

Namų darbas — neišreiškiamos neteisingos būsenos

Namų darbas — neišreiškiamos neteisingos būsenos.

  1. Aprašyk Apod. Sukurk src/types.ts su ApodImage, ApodVideo ir Apod sąjunga. Pabandyk pasiekti pic.hdurl nepatikrinęs — kompiliatorius atmes; pridėk if (pic.media_type === 'image') — atrakins.
  2. Ištaisyk 15 pamokos klaidas. Grįžk į detail.ts: pakeisk pic.hdurl į pic.media_type === 'image' ? pic.hdurl : undefined (arba narrowinimą) ir apsaugok pic.copyright. npm run typecheck — švaru.
  3. Literalų sąjunga. Aprašyk Rating. Pabandyk const r: Rating = 47 — klaida. const r: Rating = 5 — ok.
  4. LoadStatus. Aprašyk LoadStatus sąjungą ir AppState. Įrodyk, kad negali sukonstruoti „kraunama IR klaida": pabandyk status = { state: 'loading', message: 'x' } — klaida (loading neturi message).
  5. Pamąstyk apie principą. Kur dar programoje „neteisinga būsena" galėtų būti padaryta neišreiškiama? (Pvz. SortKey, Theme, maršrutai.)

Privalomi testai:

  • Susiaurinimo testas: hdurl pasiekiamas tik po media_type patikros.
  • Neišreiškiamumo testas: { state: 'loading', error: ... } nekompiliuojasi.

Atsiskaitymui: ekrano nuotraukos: (1) hdurl klaida be patikros ir ✓ su patikra, (2) Rating = 47 klaida, (3) neįmanoma „loading + error" būsena.

Toliau. Tipai aprašo, ko tikiesi. Bet 17 pamokoje pamatysim skylę: response.json() grąžina any — tipai netikrina, ką gavai iš tikro serverio. Išmoksim tipo sargus (value is Apod), kad prie tinklo ribos nepatikimi duomenys taptų patikimu tipu.