Podstawy
1 godz. 31 min · Typescript · Full-stack i Programowanie
Adam GospodarczykTypeScript umożliwia opisanie naszego kodu typami oraz wychwytywanie dotyczących ich błędów na wczesnym etapie developmentu. W efekcie wykorzystanie TypeScript'u w projekcie podnosi jego jakość i zmniejsza ryzyko pomyłek, które mogą być nie wychwycone na etapie testowania lub mogą pojawić się dopiero w środowisku produkcyjnym.
Z pomocą Reacta tworzymy coraz bardziej złożone aplikacje w których ryzyko popełnienia błędów jest wysokie. TypeScript nie tylko je zmniejsza ale również wpływa pozytywnie na tzw. developer experience (doświadczenia programisty) poprzez to, że nasze IDE "wie więcej" na temat kodu który piszemy. A to z kolei przekłada się na lepszą wydajność i komfort pracy.
Przy założeniu że znamy już samego Reacta oraz TypeScript, połączenie tych dwóch umiejętności jest stosunkowo proste. Wystarczy poznać ogólne zasady typowania propsów, komponentów oraz hooków aby z powodzeniem móc wykorzystywać zalety płynące z posiadania typów w naszym kodzie. W tym kursie dowiesz się jak to zrobić, w najszybszy możliwy sposób.
Kurs został przygotowany tak aby na prostych przykładach pokazać Ci w jaki sposób wykorzystywać TypeScript w projektach React.js. Jeżeli szukasz źródła które pozwoli Ci szybko zacząć - jesteś w dobrym miejscu.
Materiał zawiera dobre praktyki i sugestie dotyczące wykorzystania TypeScript'u oraz konfiguracji środowiska pracy (np. IDE) oraz ustawień samego projektu. Jest to wiedza którą możesz wykorzystać również w przypadku pracy z innymi technologiami.
Kurs został przygotowany z myślą o osobach, które znają już React oraz TypeScript i chcą dowiedzieć się w jaki sposób połączyć te umiejętności. Materiał niemal całkowicie pomija informacje na temat mechanizmów Reacta oraz TypeScript'u. Jeżeli potrzebujesz poszerzyć swoją wiedzę na ich temat, zapraszamy Cię do naszych pozostałych kursów.
W tej lekcji pokażę Ci w jaki sposób typować zdarzenia i akcje.
Przykładowo, jeżeli będziemy mieć jakiś
przycisk, do którego będziemy chcieli podpiąć zdarzenie, to oczywiście handler
tego zdarzenia możemy wpisać bezpośrednio w kodzie HTML.
I tutaj uwagę, że jeżeli przekazałem tutaj
parametr event to od razu informuje tutaj typ tego zdarzenia.
I zwróć uwagę, że wykorzystujemy tutaj moz
Event, do którego przekazywany jest typ generyczny wskazujący na button.
I oczywiście wynika to z faktu, że wykorzystujemy tutaj button.
Natomiast jeżeli byłby to inny element HTML, ta klasa uległaby tutaj zmianie.
Jest to niezwykle istotne, aby zapamiętać,
że właśnie w ten sposób typujemy zdarzenia, gdzie i swoją drogą posługujemy
się tutaj max eventem, ale pochodzącym z biblioteki.
Jak za chwilę pokażę Ci co to dokładnie oznacza.
Tym razem, jeżeli teraz wewnątrz tej funkcji spróbujemy odczytać właściwość np.
text content, to oczywiście nie będzie z tym żadnego problemu.
Tak samo, jeżeli teraz spróbujemy
wyświetlić listę dostępnych tutaj właściwości, no to faktycznie TypeScript
podpowiada nam ten, do której rzeczywiście mamy tutaj dostęp.
I to właśnie związane jest z tym, że przekazujemy tutaj typ opisujący button.
Jeżeli mielibyśmy do czynienia z importem, wtedy moglibyśmy odczytać np.
jego właściwość Valium.
Dodatkowo chciałbym zwrócić Twoją uwagę na
wykorzystanie tutaj właściwości Current target ze względu na to, że w przypadku
kliknięcia faktycznie chodzi nam o to, aby odwołać się tutaj do elementu, który
wywołał to zdarzenie, a nie tego, który faktycznie został tknięty.
Tak czy inaczej taki zapis Chandlera ma
może jakiś sens w przypadku bardzo prostych zdarzeń.
Tak, w większości przypadków będziemy
tutaj sięgać po zdefiniowane wcześniej metody.
I w tym momencie sytuacja się nieco komplikuje ze względu na to, że jeżeli
chcielibyśmy tutaj wykorzystać zdarzenie, to otrzymamy błąd skryptu informujący nas
o tym, że mamy tutaj niejawny typ, co jest oczywiście prawdą.
Aby to tutaj działało musimy wykorzystać
Max event, do którego przekazujemy typy HTML button element.
Dzięki temu teoretycznie wszystko powinno być tutaj w porządku, Natomiast mamy tutaj
błąd informujący nas o tym, że event nie jest medykiem.
Oznacza to mniej więcej tyle, że potrzebujemy ten moz event zaimportować
bezpośrednio, zmieniajac w ten sposób nasz błąd znika.
I tutaj faktycznie nie mamy event tylko literę E.
No i w ten sposób doszliśmy do punktu, w
którym mamy poprawnie oznaczony typ naszego zdarzenia.
W tej chwili też nic nie stoi na przeszkodzie, abyśmy w tym miejscu
przekazali Unie typów i wykorzystali to zdarzenie nie tylko w
przypadku buttonów, ale również elementów E.
W tej sytuacji jednak musimy zabezpieczyć
się na wypadek wystąpienia albo jednej, albo drugiej sytuacji.
To znaczy przypisze sobie teraz nasz target do zmiennej i sprawdzę czy np.
właściwość href wewnątrz niego istnieje.
Jeżeli tak, to będę w stanie je odczytać, a w przeciwnym razie mam tutaj w zasadzie
pewność, że mamy do czynienia z elementem typu button.
Zatem tak jak widzisz, typowanie zdarzeń wybij akcję sprowadza się do tego, aby
odwołać się do rodzaju zdarzenia, które ma tutaj miejsce.
I to teraz.
Jeżeli chodzi o rodzaje zdarzeń, to jest ich przynajmniej kilkanaście.
Natomiast u nas w większości przypadków będą interesowały te trzy, czyli zdarzenia
dotyczące formularzy, klawiatury oraz myszy.
Oczywiście w niektórych przypadkach
będziemy chcieli być bardziej specyficzni, aby jeszcze lepiej opisać typy zdarzeń.
Natomiast w sytuacji, gdy staniesz np.
przed implementacją event, to w zasadzie wystarczy Ci świadomość, że takie typy
zdarzeń po prostu istnieją i wtedy będziesz mógł po nie sięgnąć.
No i dodatkowo musisz pamiętać o tym, że jeżeli przygotowujesz handler do obsługi
zdarzeń, które mogą zostać podłączone do różnego rodzaju elementów, to w takiej
sytuacji musisz upewnić się, że masz do czynienia z konkretnym typem.
Tutaj słowo kluczowe int sprawdza się
doskonale do tego, aby sprawdzić, czy dana właściwość istnieje.
Przykładowo, tak jak tutaj w aktualnie klikniemy tym elemencie.
W tym wszystkim muszę jeszcze dodać, że
nie tylko możemy dodawać typy do samego parametru zdarzenia, natomiast również
możemy wykorzystać do tego, aby dodać typ do samego Chandlera.
Czyli w tej sytuacji nie będziemy dodawać typu do parametru, tylko do całej funkcji.
W takiej sytuacji sięgamy po React oraz Math Event Handler i swoją drogą
analogicznie będziemy mieć tutaj handler dla obsługi zdarzeń, klawiatury czy np.
formularza.
Tak czy inaczej zwróćcie uwagę, że od razu do naszego elementu zdarzenia został
przypisany nie tylko typ, ale również został do genetyka przekazany element.
Oczywiście nic nie stoi na przeszkodzie, aby w niektórych przypadkach zostało to
tak jak dokładnie jest tutaj opisane, ale analogicznie jak mieliśmy wtedy możemy
tutaj przekazać odpowiednie typy poszczególnych elementów.
W ten sposób otrzymujemy tutaj kompletną
definicję typu naszego Chandlera i to, po której zapis sięgniesz tak naprawdę zależy
od Ciebie, ale również od sytuacji, ponieważ czasem może zdarzyć się tak, że
ten handler będzie gdzieś przekazywany i w takiej sytuacji pomocny może okazać się o
typowanie całej funkcji, a nie tylko parametru zdarzenia.
Jeżeli chodzi o obsługę zdarzeń w akcje to
byłoby już na tyle, co chciałbym Ci powiedzieć.
Zatem nie pozostaje mi nic innego jak zaprosić Cię do kolejnej lekcji.