Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
NatomiastTypeScriptsprawdzakodpodkątemtypówwczasiekompilacji(drugikrok
naprzedstawionejnapoczątkurozdziałuliście),dlategonietrzebauruchamiaćkodu,
abyzobaczyćprzedstawionywpoprzednimprzykładziebłąd.TypeScriptstatycznieprze-
analizujenaszkodpodkątemtegorodzajubłędówipokażejeprzeduruchomieniem.
Jeślikodniekompilujesię,częstooznaczato,żepopełniliśmybłądimusimynaprawić
go,zanimspróbujemyuruchomićkod.
Rysunek2.2ilustruje,cosięstałopowpisaniukoduostatniegoprzykładuwVSCode
(naszymulubionymedytorze).
Rysunek2.2.BłądTypeErrorzgłoszonyprzezVSCode
GdywybranyedytorkodumadobrerozszerzenieTypeScriptu,błądjestwskazywanyjuż
wczasiewpisywaniazapomocączerwonejfalistejliniipodkreślającejkod.Toznacznie
skracaczasmiędzynapisaniemkoduadowiadywaniemsięobłędzieipoprawianiem
koduwceluwyeliminowaniategobłędu.
Kiedyujawniająsiębłędy?
JavaScriptzgłaszawyjątkilubprzeprowadzaniejawneprzekształceniatypówdopiero
wczasiewykonania2.Tooznacza,żemusimyuruchomićprogram,abyotrzymaćcenną
informacjęotym,żewykonaliśmynieprawidłowedziałanie.Wnajlepszymprzypadku
zachodzitowczasietestówjednostkowych,wnajgorszym-przejawiasięwpostaci
nieprzyjemnegoe-mailaodużytkownika.
TypeScriptzgłaszabłędyzwiązanezeskładniąiztypamiwczasiekompilacji.Wprak-
tyceoznaczato,żetegorodzajubłędypojawiająsięwedytorzewczasiepisaniakodu.
Jesttoniesamowiteprzeżyciedlaosób,któreniemiaływcześniejokazjiprogramować
wjęzykachztypowaniemstatycznymikompilacjąprzyrostową3.
Niemniejistniejewielebłędów,którychTypeScriptniemożewykryćwczasiekompi-
lacji,takichjak:przepełnieniestosu,przerwanepołączeniasiecioweczyniepoprawne
2
Takdlajasności:JavaScriptwskazujebłędyskładniikilkawybranychpomyłek(takichjakdeklaracje
const
opowtarzającychsięnazwachwtymsamymzakresie)posparsowaniuprogramu,aleprzedjegouruchomieniem.
GdyparsujemykodJavaScriptuwramachprocesubudowania(np.przyużyciukompilatoraBabel),możemy
ujawniaćtebłędywczasiebudowania.
3Językizkompilacjąprzyrostowąumożliwiająszybkąrekompilacjępodokonaniumałejzmiany,ponieważ
niewymagająrekompilacjicałegoprogramu(łączniezczęściami,którenieuległyzmianie).
10|Rozdział2:TypeScript:obrazogólny