TypeScript 7 debiutuje z funkcją „isolated declarations” – trybem kompilatora, który pozwala dużym monorepo na równoległą kompilację plików i przyspiesza pętle informacji zwrotnej dla programistów.
Dlaczego „isolated declarations” są teraz istotne
Do tej wersji kompilator TypeScript przetwarzał pliki deklaracji (.d.ts) na pojedynczym wątku. W bazach kodu obejmujących setki pakietów ten krok często spowalniał cały proces budowania (build pipeline). Dzięki rozdzieleniu pracy sprawdzania typów na wiele rdzeni, „isolated declarations” drastycznie skracają czas budowania dla zespołów, które przechowują wszystkie swoje biblioteki w jednym repozytorium.
Wpływ tej zmiany jest natychmiastowy dla każdej organizacji, która uruchamia zadania CI lub potrzebuje szybkich lokalnych przebudowań.
Droga do równoległego sprawdzania typów
Microsoft wprowadził kompilację przyrostową (incremental compilation) lata temu, ale faza deklaracji pozostała sekwencyjna, ponieważ pliki zależały od siebie nawzajem. W miarę wzrostu monorepo, jednowątkowe przetwarzanie stało się kosztownym wąskim gardłem. „Isolated declarations” przełamują łańcuch zależności, traktując publiczną powierzchnię każdego pliku jako niezależną jednostkę i walidując je jednocześnie.
Kto zyska, a kto może nie
- Zespoły deweloperskie z dużymi monorepo – Odnotują największe skrócenie czasu budowania, szczególnie na agentach CI z wieloma rdzeniami CPU.
- Małe projekty lub aplikacje z jednym pakietem – Mogą zauważyć jedynie niewielką poprawę, ponieważ krok deklaracji zajmuje obecnie znikomy ułamek całkowitego czasu kompilacji.
- Zespoły pracujące na ograniczonym sprzęcie – Podobnie, odnotują jedynie marginalną poprawę z tego samego powodu.
Szersze wydanie TypeScript 7
„Isolated declarations” pojawiają się wraz z zestawem ulepszeń skoncentrowanych na bezpieczeństwie:
- Udoskonalenia trybu strict – Nowe sprawdzenia, takie jak
strictIndexSignatures, ostrzegają, gdy kod próbuje uzyskać dostęp do klucza obiektu, który może nie istnieć. - Nazwane elementy krotek (named tuple elements) – Programiści mogą etykietować pozycje w krotkach, co sprawia, że sygnatury API są samodokumentujące się.
- Ulepszony operator
satisfies– Lepsza obsługa złożonych generyków poprawia wnioskowanie typów bez poświęcania czytelności. - Propagacja kontekstu async – Wsparcie dla AsyncContext API ułatwia śledzenie asynchronicznych stosów wywołań.
- Metadane dekoratorów – Propozycja TC39 pozwala kodowi uruchomieniowemu na inspekcję dekoracji klas.
- Jawne adnotacje wariancji – Użycie
+lub-przy parametrach generycznych sygnalizuje kowariancję lub kontrawariancję, zwiększając dokładność sprawdzania typów.
Dodatki te wzmacniają reputację TypeScript jako języka typu „type-first”, ale to „isolated declarations” jest jedyną funkcją, która bezpośrednio rozwiązuje problem skalujący się wraz z rozmiarem bazy kodu.
Co dalej
Podsumowanie
„Isolated declarations” zapewniają szybsze budowanie zespołom pracującym głównie z monorepo. Dla organizacji płacących za minuty CI lub borykających się z powolnymi lokalnymi przebudowaniami, aktualizacja do TypeScript 7 jest niskoryzykownym ruchem, który przekłada się na wymierne oszczędności czasu i kosztów. Pozostała część wydania dodaje przydatne zabezpieczenia, ale silnik równoległego sprawdzania typów to główna funkcja, która bezpośrednio odpowiada na wyzwania związane ze skalowalnością we współczesnym rozwoju JavaScript.
