Tema
/
Interneto svetainių kliento dalies kūrimas JS

tsconfig.json — kompiliatorius

Kodo stulpelyje — tsconfig.json, kompiliatoriaus konfigūracija. Svarbiausia eilutė:

"strict": true

Be griežtojo režimo TypeScript beveik nieko negaudo — tai tiesiog „JavaScript su papildoma sintakse". Su juo kompiliatorius pradeda reikalauti tų dviejų apsaugų, kurias vanilla pamiršdavo. (Ir tai sąmoningai tik pagrindas: 18 pamoka įjungia dar griežtesnius flag'us — noUncheckedIndexedAccess, exactOptionalPropertyTypes — po vieną, kad matytum, ką kiekvienas pagauna.)

Dvi eilutės, vertos dėmesio:

  • "noEmit": truetsc negeneruoja .js. Kodėl? Nes surinkimą (bundling) atlieka Vite. tsc čia — tik tikrintojas. Du įrankiai, du darbai: tsc tikrina tipus, Vite verčia ir pakuoja.
  • "include": ["src"] — tikrinam tik src/ aplanką (ten gyvens .ts failai).

Patikrink. Perkelk vieną vanilla failą į .ts (pvz. detail.ts su pic.hdurl ir pic.copyright.trim()), tada:

npm run typecheck

Turi pamatyti būtent tas dvi klaidas:

src/views/detail.ts:14  TS2551: Property 'hdurl' does not exist on type 'Apod'.
src/views/detail.ts:41  TS18048: 'pic.copyright' is possibly 'undefined'.

Kompiliatorius ką tik rado tikras klaidas kode, kuris veikė. Kaip jas ištaisyti (diskriminuota sąjunga, optional laukai) — 16 pamoka.

Spąstai (.ts naršyklėje). Pabandyk <script type="module" src="detail.ts"> tiesiogiai — naršyklė nekraus arba mes klaidą: ji nemoka .ts. Tipai turi būti iškirpti pirma. Todėl nuo dabar leidžiam ne per python -m http.server, o per npm run dev — Vite ant skrydžio verčia .ts į .js. Tai — ta „surinkimo pakopa", kurios 14 pamokų neturėjom; ją atsinešė tipai.