TypeScript 7 - компілятор, переписаний з TypeScript на Go. Порт робили максимально близько до оригіналу, тож перевірка типів дає ті самі результати, а виграш - у швидкості: нативний код і багатопотоковість.
Що це дає на практиці:
- повна збірка у 8-12 разів швидша: за даними команди TypeScript, перевірка кодової бази VS Code - 10,6 с замість 125,7 с;
- редактор: проєкт відкривається й показує першу помилку за секунду-дві замість десятків секунд;
- пам'ять - зазвичай менше, ніж у TypeScript 6;
- новий режим
--watchна основі файлового спостерігача з Parcel, портованого на Go.
Нові прапорці паралелізму:
--checkers N- кількість паралельних перевіряльників типів (за замовчуванням 4). Більше - швидше на потужних машинах, але більше пам'яті; на слабких CI-раннерах варто зменшити;--builders N- паралельна збірка проєктів у--build(монорепозиторії). Множиться з--checkers:4 × 4- до 16 перевіряльників одночасно;--singleThreaded- вимкнути паралелізм (налагодження, обмежені середовища).
Різна кількість --checkers у рідкісних випадках може дати різні результати, залежні від порядку, - тому команді варто зафіксувати одне значення для всіх середовищ.
Що потребує уваги при переході:
- TypeScript 7 бере значення за замовчуванням з 6.0 (
strict,types: [],rootDir: ".") і робить помилками все, що 6.0 оголосив застарілим:baseUrl,moduleResolution: node10,target: es5,module: amd/umd,esModuleInterop: falseта інше. Рекомендований шлях - спершу перейти на 6.0 і прибрати всі попередження; - немає програмного API в 7.0 - його обіцяють у 7.1. Інструменти, що імпортують
typescriptяк бібліотеку (typescript-eslint, частина плагінів збирачів), працюють через пакет сумісності@typescript/typescript6, встановлений поряд через псевдонім npm. Тодіtsc- це TypeScript 7, а інструменти бачать API 6.0; - JSDoc у JavaScript-файлах аналізується ближче до
.ts- деякі старі шаблони перестали розпізнаватися; - шаблонні рядкові типи тепер працюють з кодовими точками Unicode, а не з половинками сурогатних пар.
Що лишилося незмінним: мова, синтаксис і правила перевірки. Код, що компілюється в 6.0 без попереджень, компілюється в 7.0 так само.