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 przechodzimy do typowania chórków i zaczynamy od Stage.
Co prawda spotkaliśmy się z nimi już na przestrzeni poprzednich lekcji, natomiast
tym razem przyjrzymy się jemu nieco bliżej.
Zacznijmy od tego, że utworzymy sobie
tutaj komponent Counter, który będzie posiadał stan przechowujący sam licznik.
No to nie pozostaje nic innego jak zdefiniować ten komponent i wykorzystamy
tutaj komponent funkcyjny, wewnątrz którego skorzystamy z Hooka State.
Tak jak powiedziałem, przechowujemy tutaj
aktualny stan licznika i dodatkowo stworzymy metodę, która będzie reagować na
kliknięcie przycisku i jednocześnie zwiększać nasz counter.
Zatem ostatnią rzeczą, o którą musimy tutaj zadbać jest ładowanie naszego
przycisku oraz aktualnego stanu naszego licznika.
W tym momencie jedynym błędem, który tutaj mamy jest fakt, że nie zaimportować
naszego hooka, ale w momencie gdy to zrobimy nagle okaże
się, że tak naprawdę niczego dodatkowego tutaj od nas nie oczekuje.
Co prawda dodaliśmy tutaj definicję typu dla eventów, natomiast jeżeli chodzi o sam
stan, no to jeżeli sprawdzimy, to rzeczywiście tips domyślił się na
podstawie domyślnej wartości, że mamy tutaj do czynienia z liczbą.
Zatem za każdym razem, gdy będziemy
przekazywać tutaj jakąś inną wartość, otrzymamy błąd.
Jest to dobra wiadomość ze względu na to, że nie wymaga to od nas dodatkowego
zaangażowania, a jednocześnie zyskujemy tutaj na bezpieczeństwie typów.
Oczywiście mogą zdarzyć się sytuacje, w
których na przykład w stanie przechowujemy dane, które na początku są Nole.
Zatem w takiej sytuacji tekst nikt już nie
domyśli się odpowiednio naszego typu i musimy mu tutaj w tym pomóc.
Wystarczy, że w tym celu wykorzystamy
zapis genetycznej i przekażemy tutaj number lub NULL.
W tym momencie nasza sytuacja zaczyna się
tutaj zmieniać, aczkolwiek ten konkretny przykład nie jest dostosowany do tego,
abyśmy mogli przechowywać tutaj wartość null, ponieważ tutaj ją implementujemy.
Zatem tak naprawdę chodzi tylko o to, abyś
wiedział, że w sytuacji, gdy inicjalizacja stanie jakąś inną wartością, to po prostu
wykorzystując zapis genetyczny możesz tutaj przekazać odpowiedni typ.
W naszym przypadku nie będzie to potrzebne i tak naprawdę możemy w ogóle usunąć tutaj
definicje typów i za nic zasiać nasz licznik.
Dodam jeszcze, że oczywiście też nic nie stoi na przeszkodzie.
Robiliśmy to w poprzednich lekcjach, aby przekazać tutaj dowolne np.
aliasy typów bądź też interfejs.
Dzięki temu uzyskujemy dodatkową elastyczność, bo np.
może okazać się, że będziemy tutaj wykorzystywać podwójny zapis genetyczny
do tego, aby odpowiednio opisać dane przechowywane w naszym stanie.
Ostatecznie jednak myślę, że jest to dość
oczywiste i nie będziemy się tutaj zgłębiać jeżeli chodzi o samo typowanie.
To byłoby na tyle.
Zatem proponuję, abyśmy zobaczyli w
kolejnych lekcjach jak typować kolejne huki.