TypeScript 7 виходить із «isolated declarations» — режимом компілятора, який дозволяє великим монорепозиторіям компілювати файли паралельно та прискорює цикли зворотного зв'язку для розробників.
Чому isolated declarations важливі саме зараз
До цього релізу компілятор TypeScript обробляв файли декларацій (.d.ts) в одному потоці. У кодових базах, що охоплюють сотні пакетів, цей етап часто гальмував увесь конвеєр збірки. Розподіляючи роботу з перевірки типів між ядрами, isolated declarations значно скорочують час збірки для команд, які зберігають усі свої бібліотеки в одному репозиторії.
Ефект відчують одразу всі організації, які запускають CI-завдання або потребують швидкої локальної перезбірки.
Шлях до паралельної перевірки типів
Microsoft додала інкрементальну компіляцію ще кілька років тому, але фаза декларацій залишалася послідовною, оскільки файли залежали один від одного. З розростанням монорепозиторіїв однопотоковий прохід став дорогою «вузькою місцем». Isolated declarations розривають ланцюг залежностей, розглядаючи публічний інтерфейс кожного файлу як незалежну одиницю та перевіряючи їх одночасно.
Хто отримає вигоду, а хто — ні
- Команди розробників із великими монорепозиторіями — отримають найбільше скорочення часу збірки, особливо на CI-агентах із кількома ядрами процесора.
- Малі проєкти або додатки з одним пакетом — можуть помітити лише незначне покращення, оскільки етап декларацій і так займає крихітну частку загального часу компіляції.
- Команди з обмеженим обладнанням — отримають таке ж незначне покращення з тієї ж причини.
Ширше розгортання TypeScript 7
Isolated declarations з'являються разом із набором оновлень, орієнтованих на безпеку:
- Удосконалення суворого режиму (Strict mode) — нові перевірки, такі як
strictIndexSignatures, попереджають, коли код звертається до ключа об'єкта, якого може не існувати. - Іменовані елементи кортежів (Named tuple elements) — розробники можуть позначати позиції в кортежах, роблячи сигнатури API самодокументованими.
- Покращений оператор
satisfies— краща обробка складних дженериків покращує виведення типів без втрати читабельності. - Пропагація контексту асинхронності (Async context propagation) — підтримка AsyncContext API допомагає відстежувати асинхронні стеки викликів.
- Метадані декораторів (Decorator metadata) — пропозиція TC39 дозволяє коду під час виконання перевіряти декоратори класів.
- Явні анотації варіантності (Explicit variance annotations) — використання
+або-для параметрів дженериків сигналізує про коваріантність або контраваріантність, підвищуючи точність перевірки типів.
Ці нововведення зміцнюють репутацію TypeScript як мови, де «типи на першому місці», але саме isolated declarations є єдиною функцією, яка безпосередньо вирішує проблему, що зростає разом із розміром кодової бази.
За чим стежити далі
Підсумок
Isolated declarations забезпечують швидшу збірку командам, що працюють із великими монорепозиторіями. Для організацій, які платять за хвилини CI або страждають від повільної локальної перезбірки, перехід на TypeScript 7 є малоризикованим кроком, що забезпечує відчутну економію часу та коштів. Решта релізу додає корисні засоби захисту, але саме механізм паралельної перевірки типів є головною особливістю, яка безпосередньо відповідає на виклики масштабованості сучасної JavaScript-розробки.
