Jak przejście na TypeScript poprawiło jakość kodu i zmniejszyło liczbę bugów w naszych projektach.
"Cannot read property 'x' of undefined" - ten błąd widział każdy programista JavaScript. W produkcji. O 3 w nocy. Po tym jak klient zgłosił, że "strona nie działa". TypeScript nie jest idealny, ale eliminuje całą klasę takich problemów.
Co TypeScript daje w praktyce?
JavaScript
function getUser(id) {
return fetch('/api/users/' + id)
.then(r => r.json());
}
// Co zwraca? Nie wiadomo.
// Jakie ma pola? Nie wiadomo.
// Czy id to string czy number? Nie wiadomo.
TypeScript
interface User {
id: number;
name: string;
email: string;
}
async function getUser(id: number): Promise {
const r = await fetch(`/api/users/${id}`);
return r.json();
}
// Wszystko jasne. IDE podpowiada.
5 powodów, dla których przeszliśmy na TypeScript
Autocomplete na sterydach
Nie musisz pamiętać nazw pól. IDE podpowiada. Nie musisz szukać w dokumentacji - typy SĄ dokumentacją.
Bezpieczna refaktoryzacja
Zmieniasz nazwę pola w interfejsie - TypeScript pokazuje WSZYSTKIE miejsca, które się psują. W JS? Ctrl+F i nadzieja.
Błędy przed deployem, nie po
Przekazałeś string zamiast number? TypeScript krzyczy w edytorze, nie w konsoli przeglądarki użytkownika.
Onboarding nowych osób
Nowy programista otwiera kod, widzi typy, rozumie strukturę. Bez TypeScript? "Zapytaj Marka, on to pisał 2 lata temu".
Lepsze review kodu
Reviewer widzi co funkcja przyjmuje i zwraca. Nie musi zgadywać ani uruchamiać kodu mentalnie.
Wyniki po migracji (projekt 50k+ linii)
Jak migrować? Krok po kroku
Zmień rozszerzenia .js → .ts
TypeScript jest nadzbiorem JS. Twój kod JS jest prawidłowym kodem TS. Zacznij od tego.
Włącz strict: false w tsconfig
Pozwól TypeScriptowi kompilować bez wymuszania typów. Stopniowo dodawaj typy gdzie potrzebujesz.
Dodaj typy do nowego kodu
Każdy nowy plik = pełne typy. Stary kod typujesz przy okazji zmian (boy scout rule).
Włącz strict: true
Gdy większość kodu jest otypowana - włącz strict mode. Napraw błędy. Gratulacje!
Kiedy TypeScript może nie być najlepszy?
Prototypy i hackatony - gdy liczy się szybkość nad jakością, typy spowalniają. Ale potem i tak przepiszesz.
Bardzo mały projekt - 200 linii kodu? Overhead konfiguracji może nie być wart.
Zespół nie chce się uczyć - TypeScript wymaga buy-in. Jeden człowiek piszący typy, a reszta `any` = strata czasu.
Planujesz migrację na TypeScript?
Pomożemy zaplanować migrację, przeszkolimy zespół i ustalimy standardy typowania dla Waszego projektu.