TypeScript to nadbudowa nad JavaScript, która implementuje statyczną (ścisłą) typizację. Oznacza to, że sprawdzenie typów odbywa się na etapie kompilacji, a nie podczas wykonania, jak w JavaScript.
Główne różnice:
Zalety w dużych projektach:
Przykład:
type User = { name: string; age: number; } function greet(user: User): string { return 'Witaj, ' + user.name; } const u: User = { name: 'Ivan', age: 30 }; greet(u); // Ok
Pytanie: Czy można zadeklarować zmienną typu any w projekcie na TypeScript i czy projekt nie straci zalet ścisłej typizacji?
Odpowiedź:
Tak, TypeScript pozwala na używanie typu any, co jest równoważne braku typizacji dla tej zmiennej. Częste używanie any niweczy główną zaletę TypeScript — ścisłą typizację, i ryzykujesz napotkać typowe błędy czasu wykonywania, tak jak w JavaScript.
Przykład:
let data: any = 'test'; data = 42; // Błąd nie wystąpi, ale może powodować problemy
Historia
Programista często używał typu
anydla złożonych obiektów, aby "szybciej się posunąć". W rezultacie, pewnego dnia przyszedł obiekt z brakującymi polami, a aplikacja przestała działać: błąd trafił do produkcji z powodu braku sprawdzania typów.
Historia
W dużym projekcie wymieniano wiadomości pomiędzy dwoma różnymi mikroserwisami. Jeden z serwisów zmienił strukturę obiektu, ale TypeScript nie ostrzegł o tym, ponieważ typ był wyraźnie określony jako
any. Błąd znaleziono miesiąc później na skargi użytkownika.
Historia
Młody programista nie opisał typu wartości zwracanej w publicznej funkcji, polegając na automatycznym wnioskowaniu typów. Po refaktoryzacji po drugiej stronie oczekiwania typów przestały działać, co spowodowało łańcuchowe błędy w całym projekcie.