Microsoft har lansert den endelige versjonen av TypeScript 5.6, som har vært i beta siden slutten av juli.
Den nye TypeScript-versjonen har fått en masse nyheter, blant annet kan den nå forstå logiske brister i koden din, for eksempel forårsaket av feilplasserte parenteser.
Feil som TypeScript tidligere ville godta, fordi det er gyldig JavaScript.
🚀TypeScript 5.6 is now available! 🚀
— TypeScript (@typescript) September 9, 2024
Now with
✅ New syntactic nullish/truthy checks
✅ Iterator helper methods & strictness checks
✅ Region-prioritized checking in editors
✅ Flexible --build behavior
and more! Try it today!https://t.co/qZNzVSzki1
Varsler om kodetabber
TypeScript 5.6 har fått forbedret sjekking av hvorvidt noe er nullish eller truthy.
Det betyr at hvis du for eksempel ved en feil skriver => ("arrow function") i stedet for >= (større enn eller er lik), så vil TypeScript nå varsle deg:
if (x => 0) {
// ~~~~~~
// error: This kind of expression is always truthy.
}
Det samme gjelder om du bruker nullish-operatoren (??) som her:
function isValid(value: string | number, options: any, strictness: "strict" | "loose") {
if (strictness === "loose") {
value = +value
}
return value < options.max ?? 100;
}
Det som kommer til høyre for ?? vil aldri nås, siden det på venstre side aldri er "nullish". JavaScript leser koden som (value < options.max) ?? 100, mens det du egentlig vil ha er value < (options.max ?? 100).
I TypeScript 5.6 blir du varslet om tabben:
return value < options.max ?? 100;
// ~~~~~~~~~~~~~~~~~~~
// error: Right operand of ?? is unreachable because the left operand is never nullish.
Microsoft viser i lanseringsbloggposten til flere slike eksempler der koden åpenbart ikke gjør det utvikleren hadde til hensikt å gjøre, men hvor koden likevel er gyldig JavaScript. Tidligere ville TypeScript bare akseptere koden uten noen videre protester.
– Men med litt eksperimentering, fant vi ut at mange bugs kunne fanges opp ved å flagge mistenkelige eksempler som de ovenfor. I TypeScript 5.6 vil kompilatoren nå vise feil når den syntaktisk kan avgjøre at en truthy eller nullish-sjekk alltid vil evalueres på en bestemt måte, skriver Microsoft.
Kjappere redigering av store filer
En annen nyhet i TypeScript 5.6 er såkalt "Region-Prioritized Diagnostics". Kort fortalt handler det om TypeScript Language Service, som sørger for å analysere koden du ser i editoren, og levere blant annet feilmeldinger og forslag til editoren.
Tidligere måtte TypeScript sjekke hele filen.
– Som oftest går dette fint, men i ekstremt store filer kan det føre til en forsinkelse. Det kan være frustrerende fordi det å rette en skrivefeil bør føles som en rask operasjon, men kan ta flere sekunder i en stor nok fil, skriver Microsoft.
And, 5.6 is out! Get ready for the speedups https://t.co/eUzPvzd7ZD
— Matt Pocock (@mattpocockuk) September 9, 2024
Med den nye Region-Prioritized Diagnostics-funksjonaliteten i TypeScript 5.6 kan editoren (som VS Code) gi beskjed til TypeScript om hvilke deler av koden som er relevant – typisk den delen av filen som for øyeblikket er synlig for brukeren. Og så kan TypeScript gi to sett med diagnostikkdata – en for den valgte regionen og en for hele filen.
– Dette gjør at redigering føles mye mer responsiv i store filer, slik at du ikke trenger å vente så lenge på at disse røde understrekingene skal dukke opp.
Du kan sjekke ut alle nyhetene her.