JS i TS od Podstaw #1 - Zmienne, Pamięć, Typy
Pierwsza lekcja naszego kursu JavaScript i TypeScript. Dowiedz się, jak komputer zapamiętuje dane, dlaczego uciekamy od słówka 'var' i jak TS pilnuje naszych błędów.

Witajcie w pierwszej lekcji prostego kursu JavaScript z naciskiem na TypeScript! 🎉
Jeśli potraficie już zbudować szkielet strony w HTML i nadać mu styl w CSS, nadszedł czas na krok, który oddziela statyczne strony od prawdziwych, interaktywnych aplikacji internetowych. Zanim wyślecie dane użytkownika do bazy lub zrobicie animację po kliknięciu, musicie wiedzieć, jak przechowywać informacje.
Dziś nauczymy się, jak komputer zapamiętuje dane (JavaScript) i jak upewnia się, że nie zrobimy w nich bałaganu (TypeScript). Ważna adnotacja, TypeScript to w rzeczywistości super setup JavaScript, który dodaje do niego typy, które zabezpieczają nas przed błędami. TS obsługuje wszystkie nowoczesne funkcje JS, więc nie musimy się martwić o kompatybilność.
Zaczynamy! 🚀
Zmienne – Pudełka z Etykietami
Wyobraźcie sobie zmienną jako pudełko w pamięci komputera. Wkładamy tam dane (np. imię użytkownika), przyklejamy etykietę (nazwę) i dzięki temu możemy tych danych użyć później w naszym kodzie.
W nowoczesnym JavaScript (i we frameworkach takich jak React czy Next.js [który jest z kolei frameworkiem na React]) używamy do tego dwóch głównych słów kluczowych:
1. const (Stała) - Twój domyślny wybór
Używamy const w większości przypadków. Jeśli raz włożycie coś do tego "pudełka", nie możecie tego podmienić na nic innego. To zabezpiecza kod przed przypadkowymi zmianami.
const userName = "Adam";
// userName = "Piotr"; // BŁĄD! const nie pozwala na przypisanie nowej wartości.
2. let (Zmienna)
Używamy let, gdy z góry wiemy, że wartość w pudełku będzie się zmieniać (np. licznik kliknięć na stronie, stan otwarcia menu).
let clickCount = 0;
clickCount = 1; // Super, let na to pozwala.
Duch Przeszłości: Dlaczego nie używamy var?
Zanim wymyślono const i let, programiści mieli do dyspozycji tylko jedno słowo: var. Dlaczego od niego odeszliśmy? Przez dwa zjawiska: brak blokowego zasięgu (scope) oraz tzw. Hoisting.
Zmienne let i const "żyją" tylko wewnątrz bloku kodu (np. między klamerkami { } w instrukcji warunkowej). var to ignorował i "wypadał" na zewnątrz, co powodowało dziesiątki trudnych do wykrycia błędów w dużych projektach. Dodatkowo, mechanizm JS przenosił deklaracje var na samą górę pliku, co pozwalało na używanie zmiennych... zanim w ogóle zostały stworzone!
Dziś trzymamy się zasady: var to relikt przeszłości. Używamy tylko const i let.
Wkracza TypeScript: Strażnik Pudełek
JavaScript jest językiem dynamicznym. Zmienna zdefiniowana jako let może najpierw trzymać tekst, a linijkę niżej liczbę. Brzmi wygodnie, ale w aplikacjach produkcyjnych to proszenie się o potężną awarię.
TypeScript (TS) to tzw. "nakładka" na JS, która dodaje do niego statyczne typowanie. Wprowadza jedną żelazną zasadę: Jeśli tworzysz pudełko, musisz zadeklarować, jaki typ danych będzie w nim przechowywany.
Typy Podstawowe (Prymitywy)
W TS operujemy na trzech absolutnie bazowych typach:
string(tekst)number(liczby całkowite i ułamkowe)boolean(prawda/fałsz -true/false)
Jak to zapisać? (Jawne typowanie):
const appName: string = "Moja Apka Next.js";
let maxUsers: number = 100;
let isActive: boolean = false;
Magia TypeScriptu: Inferencja
TypeScript jest sprytny. Jeśli przypisujecie wartość od razu przy tworzeniu zmiennej, TS sam "zgadnie" jej typ (Inferencja). Często pisanie np. : string jest całkowicie zbędne!
let score = 10; // TS sam "wie", że to 'number'
// Jeśli spróbujemy zrobić to:
// score = "dużo";
// TS podświetli to na czerwono w edytorze: "Type 'string' is not assignable to type 'number'."
Kod z błędem typu w ogóle się nie skompiluje. I to jest piękno TS – łapie błędy, zanim kod trafi do użytkownika!
Zadania Praktyczne
Spróbujcie samodzielnie napisać kod do poniższych zadań w dowolnym edytorze (np. VS Code):
Zadanie 1: Jawne typowanie
Napisz kod w TypeScript, który jawnie (z użyciem : typ) deklaruje:
- Stałą o nazwie
projectNamez wartością "Supabase CMS". - Zmienną o nazwie
versionz wartością 1.
Zadanie 2: Zmiana stanu
Wyobraź sobie, że sprawdzasz, czy użytkownik ma uprawnienia admina.
- Stwórz zmienną (wybierz odpowiednie słówko!), nazwij ją
isAdmin, przypisz jej jawnie typ logiczny oraz wartość początkowąfalse. - W kolejnej linijce "zmień zdanie" i przypisz do niej
true.
Zadanie 3: Błąd inferencji
- Stwórz zmienną
userRolei przypisz jej tekst "guest", nie podając jawnie typu (użyj inferencji). - W nowej linijce spróbuj przypisać do niej liczbę
404. - Co zrobi edytor i dlaczego?
Podsumowanie
- ✅ Używaj
constdomyślnie, alettylko wtedy, gdy wartość musi się zmienić. Zapomnij ovar. - ✅ JavaScript przechowuje dane w pamięci.
- ✅ TypeScript nakłada na te dane typy (
string,number,boolean), aby kod był przewidywalny i bezpieczny.
Kolejne Kroki
W następnej lekcji z tego cyklu wejdziemy głębiej. Skoro umiemy już trzymać dane, nauczymy się, jak wykonywać na nich operacje. Poznamy Funkcje, Zasięg (Scope) i dowiemy się, jak typować to, co wchodzi i wychodzi z funkcji.
Pytania? Problemy? Napisz do mnie na m@zeprzalka.com
Powodzenia w kodowaniu! 🚀