tsconfig.json — griežtieji flag'ai
Kodo stulpelyje — tsconfig.json su ĮJUNGTAIS griežčiausiais flag'ais. 15 pamoka sąmoningai pateikė tik pagrindą (strict: true); dabar įjungi likusius po vieną — ir stebi, kaip vakar kompiliavęsis kodas pradeda rodyti klaidas. Kiekviena jų — prielaida, kurios niekada neapdorojai.
Įjungęs flag'us paleisk:
npm run typecheck
Kodas, kuris 17 pamokoje buvo žalias, dabar rodo klaidas — tai flag'ai dirba, o ne tu regresavai. Taisyk po vieną; kiekvienas taisymas žemiau paaiškina, ką jo flag'as ką tik pagavo.
Svarbu: strict: true yra rinkinys. Jis įjungia daug patikrų iškart (strictNullChecks, noImplicitAny, griežtesnės funkcijų tipų taisyklės ir kt.). Papildomi flag'ai — noUncheckedIndexedAccess, exactOptionalPropertyTypes — nėra strict dalis; juos reikia įjungti atskirai, ir jie yra griežčiausi.
Praktiškai noUncheckedIndexedAccess yra tas, kuris „daugiausiai skauda" — nes jis paliečia kiekvieną masyvo/objekto indeksavimą:
const first = pictures[0]; // Apod | undefined (ne Apod!)
first.title; // ❌ 'first' is possibly 'undefined'
Iš pradžių erzina, bet būtent tai ir yra nauda: jis atskleidžia prielaidą, kurios niekada neapdorojai — „o kas, jei masyvas tuščias?". Vanilla kode tai būdavo tylus undefined.title lūžis.
Patarimas. Kai kurie flag'ai (
noUnusedLocals,noUnusedParameters,noFallthroughCasesInSwitch) — mažiau apie tipus, daugiau apie švarą: nenaudojamas kintamasis ar „prakritęs"switch casebeveik visada yra klaida arba nebaigtas kodas. Griežtas režimas gaudo ne tik tipų, bet ir loginius aplaidumus.