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

Viena funkcija per abu build'us

Kad arka „susijungtų", atsek vieną funkciją per abu build'us — pamatysi tiksliai, ką pridėjo tipai.

Imkim nuotraukos detalę (detail), kurią statei 14 pamokoje.

Vanilla versija veikė — bet su paslėptomis spąstomis:

img.src = pic.hdurl || pic.url;              // veikia TIK todėl, kad prisiminei „|| pic.url"
if (pic.copyright) {                          // veikia TIK todėl, kad prisiminei šį if
  credit.textContent = ${pic.copyright}`;
}

Abi eilutės teisingos — bet niekas neužtikrino, kad jas parašysi. Naujokas komandoje, kopijuodamas kodą, lengvai praleistų || pic.url arba if — ir programa lūžtų vaizdo dieną arba prie nuotraukos be autoriaus.

TypeScript versija tų klaidų neleidžia parašyti:

if (pic.media_type === 'image') {
  img.src = pic.hdurl ?? pic.url;            // hdurl pasiekiamas TIK po media_type patikros
}
if (pic.copyright !== undefined) {           // kompiliatorius REIKALAUJA šios patikros
  credit.textContent = ${pic.copyright}`;
}

Skirtumas ne stiliuje — kas užtikrina teisingumą. Vanilla: tavo atmintis ir drausmė. TypeScript: kompiliatorius, kuris atsisako kompiliuoti, kol neapdorosi visų atvejų. Pamiršti nebeįmanoma — ne todėl, kad tapai atidesnis, o todėl, kad kalba nebeleidžia.

Tas pats matosi visur:

Vieta Vanilla TypeScript
media_type „prisimink patikrą" susiaurinimas privalomas
būsena isLoading + error atskirai LoadStatus sąjunga (negalima abu)
API atsakymas pasitiki any tipo sargas prie ribos
rikiavimas switch be default assertNever — visi variantai
įvertinimas bet koks number Rating = 0..5

Kiekvienoje eilutėje TypeScript pavertė „reikia prisiminti" į „negali pamiršti". Tai ir yra visas kursas — ne „TypeScript yra geras", o „štai tiksliai kokias tavo paties klaidas jis pagauna, ir kodėl vanilla jų nepagavo".