TypeScript vs JavaScript: prawdziwa różnica

TypeScript vs JavaScript

TypeScript vs JavaScript: co się zmienia, co generuje tsc | We.Inc

Zobacz TypeScript obok JavaScriptu, do którego się kompiluje, dowiedz się, co wyłapuje type checker, dlaczego typy znikają w runtime i kiedy zwykły JavaScript w zupełności wystarczy.

TypeScript to JavaScript z systemem typów. Piszesz zwykły JavaScript z opcjonalnymi adnotacjami typów, a kompilator tsc je sprawdza, po czym usuwa, tworząc czysty JavaScript. Przeglądarki i Node uruchamiają ten wynik, więc typy nigdy nie istnieją w runtime. Zyskiem jest wyłapywanie błędów podczas edycji, a nie szybszy kod.

Obok siebie

Wybierz przykład poniżej, aby zobaczyć plik TypeScript obok JavaScriptu, który tsc dla niego napisał. Najczęściej wynik to Twój kod z usuniętymi adnotacjami. Kilka funkcji, takich jak enumy, generuje prawdziwy kod, a ta różnica ma znaczenie przy wyborze narzędzi.

Najczęściej zadawane pytania

Czy TypeScript to inny język niż JavaScript?

To nadzbiór. Każdy program TypeScript staje się JavaScriptem, a TypeScript dodaje składnię do opisywania kształtów wartości. Najpierw naucz się JavaScriptu; typy leżą na nim, a nie go zastępują.

Czy TypeScript przyspiesza moją stronę?

Nie. Adnotacje są usuwane przed uruchomieniem kodu, więc przeglądarka wykonuje ten sam JavaScript, który napisałbyś ręcznie. Korzyści to mniej błędów docierających do użytkowników i bezpieczniejszy refaktoring.

Czy tsc odmówi buildu, gdy jest błąd typu?

Domyślnie nie. tsc zgłasza błąd i mimo to zapisuje plik .js, co umożliwia stopniową migrację. Ustaw noEmitOnError, jeśli chcesz, aby nieudane sprawdzenie blokowało wynik.

Czy Node może uruchamiać pliki .ts bez kroku build?

Nowe wersje Node usuwają usuwalną składnię typów i uruchamiają plik, z type stripping włączonym domyślnie od v23.6.0 i v22.18.0. Node nie sprawdza typów, a składnia wymagająca wygenerowanego kodu, na przykład enumy, jest odrzucana.

Kiedy zwykły JavaScript jest lepszym wyborem?

Małe skrypty, szybkie prototypy i strony z kilkoma linijkami interaktywności rzadko zwracają koszt konfiguracji. Gdy projekt ma kilka plików, kilka osób lub dane przekazywane między modułami, checker zaczyna oszczędzać prawdziwy czas.

Co właściwie robi tsc

Typy są usuwane, więc waliduj prawdziwe dane

Funkcje, które nie są po prostu usuwane

Dodaj TypeScript do projektu JavaScript

Zainstaluj i utwórz tsconfig

Instaluje kompilator lokalnie, zapisuje startowy tsconfig.json i uruchamia sprawdzenie bez zapisywania plików.

allowJs pozwala starym plikom .js stać obok nowych plików .ts podczas migracji; noEmit zostawia generowanie wyniku bundlerowi.

Sprawdzanie danych, których kompilator nie widzi

Strażnik w runtime, który zawęża typ

Funkcja naprawdę sprawdza wartość, a typ zwracany mówi kompilatorowi, co udowodniła.

Adnotacje

Typy parametru i wartości zwracanej są sprawdzane, a potem usuwane. Ciało funkcji pozostaje nietknięte.

Interfejs

Interfejs nie generuje żadnego wyniku. Istnieje wyłącznie dla checkera.

Enum

Zwykły enum staje się prawdziwym obiektem z odwrotnym mapowaniem, więc to wygenerowany kod, a nie usunięta składnia.

const enum

tsc wstawia składowe const enum bezpośrednio jako liczby i zostawia komentarz z oryginalną nazwą.

Błąd typu

tsc zgłasza: Argument of type 'string' is not assignable to parameter of type 'number'. Mimo to zapisuje plik, chyba że ustawiono noEmitOnError.

TypeScript i JavaScript, którym się staje

Wybierz przykład

TypeScript, który piszesz

JavaScript generowany przez tsc (target es2022)

Kopiuj TypeScript

Kopiuj JavaScript

Linie na wejściu: {n}, na wyjściu: {v}

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony