Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
(zytypyautomatycznieprzekształcane?
JavaScriptjestjęzykiemosłabymtypowaniu.Tooznacza,żejeśliwykonamyniepra-
widłowedziałanie,np.dodamyliczbędotablicy(jakwrozdziale1),JavaScriptzasto-
sujewieleregułwceluodgadnięcianaszychintencjiispróbujezrobićcomożewdanej
sytuacji.Przeanalizujmypewienprzykładilustrujący,wjakisposóbJavaScriptwyzna-
czawynikdziałania3+[1]:
1.JavaScriptzauważa,że3jestliczbą,a[1]jesttablicą.
2.Ponieważużywamyoperatora+,zakłada,żechcemypołączyćjezesobą.
3.Wniejawnysposóbprzekształca3włańcuch,codajeΠ3”.
4.Wniejawnysposóbprzekształca[1]włańcuch,codajeΠ1”.
5.Łączywyniki,codajeΠ31”.
Moglibyśmyosiągnąćtensamefektrównieżwjawnysposób(eliminująckroki1,3i4):
3+[1];
(3).toString()+[1].toString()
//dajewwynikuH31”
//dajewwynikuH31”
PodczasgdyJavaScriptpróbujepomóc,automatyczniewykonującsprytneprzekształ-
ceniatypów,TypeScriptskarżysię,gdypodejmujemynieprawidłowedziałanie.Gdy
uruchomimytensamkodJavaScriptuzapomocąTSC,otrzymamybłądinformujący,
żeniemożnastosowaćoperatora‘+’natychtypach:
3+[1];
(3).toString()+[1].toString()
//BłądTS2365:Niemożnazastosowaćoperatora
//I+’dotypówI3’iInumber[]’.
//dajewwynikuH31”
Jeślipodejmiemydziałanie,którewydajesięnieprawidłowe,TypeScriptzgłaszazaża-
lenieiwycofujejedopierowtedy,gdywjawnysposóbwyrazimynaszeintencje.Takie
zachowaniemasens:komuprzyszłobydogłowydodawanieliczbydotablicywcelu
otrzymaniałańcucha(oczywiściepozaBavmordą,czarownicąJavaScriptu,którasiedzi
wpiwnicypewnegostart-upaiprogramujeprzyblaskuświec)?
Tegotypuniejawneprzekształcania,jakieprzeprowadzaJavaScript,mogąbyćźródłem
trudnychdozlokalizowaniabłędówistanowiązmoręwieluprogramistówJavaScriptu.
Toutrudniapojedynczyminżynieromwykonywaniezadańidodatkowokomplikuje
skalowaniekoduwdużychzespołach,ponieważkażdyczłonekzespołumusizrozumieć
niejawnezałożeniaprzyjętewkodzie.
Wskrócie,gdyprzekształcanietypówjestkonieczne,należyprzeprowadzaćje
wsposóbjawny.
Kiedysprawdzanetypy?
WwiększościsytuacjiJavaScriptniezwracauwaginaprzekazywanetypyipróbuje
jaknajlepiejdostosowaćto,cootrzymał,dotego,czegooczekiwał.
JavaScriptversusTypeScript
|
9