Перагляд протык запуску: як кампайлер Go у TypeScript 7 пасуе да вашага інструментальнага комплекта
Дазвольце дазнацца, што насправды прыягчае роботу вбудованаго кампайляра Go ў TypeScript 7, чаму такія інструменты як Angular і typescript-eslint адстаюць, і як аддзеліць пераканальнэе контролюванне типаў ад выконання.
Крыніцы: TypeScript 7 Moved Its Compiler to Go. Here’s What Actually Changes
TypeScript 7 заменяе самастацэны кампайляр на натыўны варіянт, напісаны на мове Go, і ключавыя цифры ў яго характэрыстыках настолькі вялікія, што можу спакусіць плутанне ўсёга, што на самай працоўнае збіранне становіцца быстрэй. Скорасць вашага JavaScript у працоўнай сіткі зовсім не зменшыцца; змянюецца скорасць вашага рэдагара, прыемніка типоў у рамках CI-процэса і процесаў стварэння монорепо. У той жытак Node, Bun і Vite зробілі кампайляр TypeScript неабавязковым для запуску та перетварэння коду. Што да гіду, ён разлучае гэтыя аспекты, каб вы моглі адначасова вядомаць, што трэба апгрэйдаваць, чакаць, і як структураваць комплект засобаў, у яком перагляд та выкананне є двума адналежнымі задачамі.
Завдяк шырокаму распространэнню TypeScript, важна правільная ўстановка і викорыстоўванне яго. У ліпене 2025 года GitHub паведаміў, што TypeScript стаў самым популярным языкам сярод тых, кім ў месяц адправляюць код, пераканаўшы Python і JavaScript; болей 2,6 мільйонаў чалавек ў месяц дапамагаюць у розвіцці коду на TypeScript. Будь-яя змена ў основах гэтага екосістэмы паўтараецца ў фреймворках, інструментах для перагляду коду, менеджерах пакетаў і редактарах, прычаму не всія з яных развиваюцца з аднаковай шчыльнасцю.
З самастойна адмаштаванага компілятора да натыўнага
Даўжыню версіі 7, tsc была програма на базе самага сябе. Яе код быў напісан на TypeScript, яна кампілявалася у JavaScript, а гэты JavaScript запускаўся на Node для парсінгу, перакантролювання і обработкі проектаў іншых разрабоў. Самастойны хостынг ёсць популярной практыкай для кампілятораў, і такія рашэнні дапамоглі мове перажыць дзесятак гадоў стрэмкага росту. Аднак яе меры — гэта среда выканання JavaScript: адна галоўная ніт, купа для збору сметлівых дадзенняў, якая ніколи не налаштоввалася для велічзю графаў синтаксічных вузлаў і типаў у памяці, а таксама обмежаныя можлівасці для раздзелення гэтых дадзенняў межы робітнікаў.
Адаптация Microsoft была проста перенасланнем коду, а не перапісвам. База коду на Go спецыяльна падражоўвае структуру і працэю існуючай рэалізацыі, таму система типаў і яе семантыка маюць застацца тымі ж. Зменяецца толькі фундамент пад імі: натыўны машынны код, задзеянні, якія можуць дзеліцца памэцю, і значна большыя можлівасці для паралельнай роботы. Самэй гэтой прычыны Go стала прагматычным выборам; яго модэль памяці і збіральнік сметлівасці дазволяюць командзе перакласты існуючы код з аднаковымі структурамі дадзеных, у замест на перапроектаванне всього на адповідачы правілам власнасці.
Публікуемыя тэсты паказваюць, што стандартныя процесы компіляцыі стаюць на 8-12 разоў быстрэйшымі:
- Час компіляцыі базы коду VS Code зменшыўся з 125,7 секунды пад TypeScript 6 до 10,6 секунды пад TypeScript 7.
- Час компіляцыі Playwright зменшыўся з 12,8 секунды до 1,47 секунды.
Фраза «TypeScript працюе у дзесять разоў быстрэй» ёсць точным падсумкам гэтых цифр. Але ёё легка неправильна зрозумець, адколі ў яй не сказана, у чым саме полягае дзесяцікратная швальнеча.
Што становіцца швальней, а шта — ні
Возьмем просты, звычайны фрагмент коду на TypeScript: інтерфейс і об’ект, які яго рэалізуе.
interface User {
id: string;
name: string;
}
const user: User = {
id: '42',
name: 'Arthur',
};
Які бы інструмент не скомпіляваў гэты код, браузер чы сервер у канцы канцоў отрымаюць звычайны JavaScript без інформаціі пра типы:
const user = {
id: '42',
name: 'Arthur',
};
Час запуску не ведае, якій кампайляр обрабатваў выходны код і на якій мове быў рэалізаваны той кампайляр. Ён бачыць толькі створаны JavaScript, і гэты выход застаецца тым жа, як і раней. Таму перапісванне tsc на Go нічага не зменяе ў швалі выканання вашай аплікацыі. Якщо сторунка працюе повольна або обробнік API залежыць ад сілы CPU, TypeScript 7 гэта не змяніць.
Дзеянне прыносіць парадксы ў ранейшы час, падчас развіцьбы, калі TypeScript працуе неперывна: завантажэнне проектаў, вычысленне діагназавання, аддача падтрымкі і функцыяй пошуку всіх апылянняў, стежэнне за файламі, а таксама пераканальванне будовы ў сэрвісе CI. Адна з мераў добра адбівае гэта. Адкрыванне файла з адказам пра аблычэнне ў репазітарые VS Code раней крылася пра 17,5 секунды, пакуль не з’являўся першы діагназ; з TypeScript 7 гэта трывае менш чым 1,3 секунды. Новы сервер мовы пабудаваны на протаколе Language Server Protocol, можа выкарыстоўваць калькі сэрвакоў, а Microsoft таксама зазначае значна меншыя колькасці неудачных команд сервера мовы і збоев.
Такім чынам, корыстны ўзьём для аналізу ёсць такі: сама прыкладка не становіцца быстрэй, але работа з яю так. У большым кодавой базе чыста монорепазе скасоўванне калькі хвілін на кожную перапачатку типаў і секунд на кожны діагназык рэдагара зменяе цыкл адзываў, у якім вы перабываете весь дзень. это справжнія падыходы да паўшчасці, хоць ніхто з корыстнікаў гэтага ніколі не запазнае.
Іншыя элементы выпуску TypeScript 7
Натыўны кампайлер домінуе ў дыскусіях, але калькі падсістэм было перабудавана навакол яго.
Паралелізм, які можна налаштаваць
Аналіз, генераванне коду і часткі перапачатку типаў можна адбываць паралельна, а будовы з прамянамі да проектаў могу компіляваць калькі проектаў адразу, што ёсць найважлівейшым у монорепазе. Вы можетэ ясна падняць колькість працоўнікаў для перапачатку типаў:
tsc --checkers 8
Або ж выключыце паралелізм цэлкам, для апаратаў з мяроўдзівымі лімітамі рэсурсаў або калі хочаце дэтэрміністычнага паведання пад час дэбаггірання:
tsc --singleThreaded
Адзінэчны флаг --builders кантролюе, скількі запускаў на адной часовым прасторе ведуцься для рэферэнсаў проекта. Спрыяйце іх вядомым як настройкі, а не як пераключанні „максімаў для всего“. Кожны дадатковы працоўнік займае свой частак прамыслу ў памяці, таму CI-раннер з многімі ядрамі, але мяроўдзівым RAM, можа стаць повольнейшым або выйсці за межы памяці, якщо проста паспраўляце працоўнікі да ядраў. Змерыце на своіх рэальных раннерах прытым, перш чым змяніце настройку.
Перабудаваны режым стазіроўкі
--watch таксама быў перыявтэрбаваны. Команда спачатку пробавала болей звычайныя міжплатформовыя падходы, якія ў наявнасці ў Go, але запыткі файловай системы сталі занадта дорогімі для большых проектаў. У падсумку яны перенеслі ідэі з механізма аблікавання файлоў на C++ у Parcel у Go і створылі новы механізм, які спрямованы на кращаяе выкарыстоўванне рэсурсаў у разных операцыйных системах.
Новыя стандартныя настройкі і адмоўленыя старыя опцыі
TypeScript 7 прыменяе змены ў настройках, якія былі введаны падчас пераходу на TypeScript 6:
strictўвімкнуты як стандартна настройка.- Стандартная настройка для
moduleтепер —esnext. typesспачатку ўжо ёсць пустым масавым элементам, таму глобальныя пакеты типаў больш не запоўнююцца аўтаматычна.target: es5быў адмоўлены.- Класычны механізм разв’язкі модуляў быў адмоўлены.
baseUrl больш не падтрымліваецца.tsconfig.json, які не зменяўся з часоў, калі Internet Explorer быў важлівым аспектам развертання, верагатна патрабуе увагі. Змены ў рэквізите types можу прынесці множлівасць памылак типу „не можна знайсці імя“ для глобальных змэнных тэстаў чы вбудованых функцый Node, пакуль вы не указаеце пакеты, на якія спалагаетесь. Якщо вы ўжо не працавалі з гэтыми стандартнымі настройкамі, наш практычны паўнаклад да перайшох на TypeScript 6.0 з урахованнем яго стандартных змян детальна ўсё адбівае, і тыя ж парадкі паслужаюць для рашэння проблем тут.
Недастатковы элемент: стабільны API кампайляра
Найважлівейшым аспектам ёсць тое, чаго няма ў TypeScript 7.0: стабільны програмны API. Для багато проектаў гэта мае большое значэнне, чым будь-які флаг або стандартны параметр, калі ўжо таму, што гэта вялічыць, чы можа ўзаемадзейваць весь інструментарыя, які працуе з кампайлярам.
Чаму экасістэма не можа змяніцца за адну ноч
Выкліканне кампайляра з тэрміналу і стварэнне інструмента на адной падставе кампайляра — гэта зусім разныя падходы. Большасць фрэймворкаў, інструментаў для мовы та лінтараў не проста викорыстоваюць бінарны файл:
tsc
Яны завантажаюць TypeScript як бібліятэку і прасяць у яе схемы синтаксісу, вырашаныя типы, адказы службы мовы і іншы внутрашні элементы кампайляра. Зьмена гэтаго API адначак плануецца ў TypeScript 7.1, і да таго часу Microsoft афіцыйна падтрымляе адначасовае встановленне обох основных версій. У момент напісання гэта значыць, што багато команд будуць вжываць натыўны кампайляр для пераконтрацоў у команднай лініи, тады калі іх інтеграцыі з рэдагувальнікамі і инструменты для праблэм-детэкцыі продовжуюць завантажаць версію, базаваную на JavaScript.
Парадкаваныя кілька вядомых інструментаў:
- Пераконтроль типаў шаблонаў у Angular глыбока адзінаваты з TypeScript, таму пачакуць, пакуль не будзе новай службы мовы, Angular застаецца з падтрымкай толькі старэй версіі.
- Інструменты для Vue, Astro, Svelte, MDX і іншых форматаў, якія включаюць TypeScript у іншы тип файлу, таксама сталкнуцца з адпоўнаюмымі обмежэннямі, пакуль не будзе выпусканы новы API.
Нічыя з гэтых раштоўак не ёсць недагэнкай самога порту. Гэта тое, як выглядае міграцыя фундаментальнага інструмента ў рэальным экасістэме: двыгун готавы раней, чым усё, што да яго прыўязваецца, будзе адаптавана.
Чатыры спосабы, якімі інструмент можа залежаць ад TypeScript
typescript-eslint ўжо є хорашым прыкладам для гэтага. Сам ESLint не пабудаваны на кампайляры TypeScript, таму тверджэнне, што „ESLint стаў быстрей, калі TypeScript перайшоў на Go“, проста ёсць некоректным. typescript-eslint, з іншай боку, ёсць мостам, які дазволяе ESLint парсаваць синтаксис TypeScript і, для правіл, які врачаюць типы, запытваць інформацыю пра типы ў TypeScript. Яго ныяны парсер яшчэ завісіць ад старэйшаг API кампайляра, хоця проект эксперыментуе з натыўным адбудовам. Адпаведальнія за проект людзі явна гатуюцься, але пераход на TypeScript 7 — гэта не проста падняць номер версіі.
Эты прыклад паказвае разлік, які варта памяцать кожны раз, калі хтось кажа, што якісь інструмент „выкарыстоўвае TypeScript“. Існуе прынеймна чатыры разныя адносы:
- Напісаны на TypeScript. Самы код інструмента ў формате TypeScript. Ён выгадвае, калі яго адпаведальныя за тыпы пераглядаюць код і складаюць яго быстрэй, але ўжо корыстувачы не бачаць жадных змян.
- Выконвае TypeScript. Сервісы рунтайму, такія як Node і Bun, прыймаюць файлы з расширэнням
.tsяк вхідны матерыял без адной участі кампайляраtsc. - Трансфармуе TypeScript. Инструменты для збірання коду і транспайлеры адключаюць типы і перапісваюць синтаксіс, працюючы з кожным файлам окрема.
- Залежыць ад семантыкі TypeScript. Інструменты для перагляду коду з правіламі, якія врачаюць типы, сервісы мовы фрэймворкаў і редактары патрабуюць, каб кампайляр разумеў цэлы програма.
Натыўны порт змініцца для кожной категорыі по-разна. Толькі для апошней з іх патрэбны API кампайляра, і самэўсёльва гэта тая категорыя, якая мусі чакаць выйшчы 7.1.
Менеджер пакетаў, які знаходзится ў процесе міграцыі
pnpm паказвае, як взаімаюцься гэтыя категорыі. Це большая монорепа на TypeScript з багатым наборам пакетаў, адзінамі з моцнымі інструментамі CI і шырокай аналізаючай функцыяй для рэдагара; на паперы гэта робіць яго ідеяльным прыемнікам парадкупленняў TypeScript 7. У канцэ вы ўсё ж такі маеце таго дасягнуць. У тым часе яе адпаведальныя за выкарыстоўванне таксама мусяць прытрымвацца работоспроможнасці typescript-eslint, а інтеграцыя гэтага лінтера яшчэ прыўязана да старой інтарфейсу кампайляра. Ланцюг залежнасцяў выглядае прыблізна так:
pnpm
↓
typescript-eslint
↓
TypeScript compiler API
↓
TypeScript 6 — for now
Таксама варта чытка адзначыць, што будуць перажываць корыстувальнікі pnpm. TypeScript 7 не робіць гэтыя каманды шчыльнейшымі:
pnpm install
Установка пакетаў — это функцыя рэнтайму pnpm, і pnpm запускаецца як JavaScript у Node, незалежна ад таго, який кампіляр пераканаліваў його код. Тыповая пераканалівачка 7 можа паспрыяць павышэнню качання разработкі pnpm: пераканаліванню типаў, запуску CI і іншым процесам, якія керуецца кампілярам. Але нават такое павышэння даходзіць толькі з такой жа швальнасцю, як і найслабейшы важлівы ланцуг у яе графе залежнасцяў. Вялікі проект не можа застосаваць фундаментальныя змены быстрэй, чым інструменты, ад якіх ён залежыць.
Дзе выгоды ўсвідомліваліся негаразду
Праекты, які патрабуюць толькі кампайляра як адміністратыўнага інструменту для пераканальвання та сэрвера мовы, можуць адразу паспець. VS Code — яскравы прыклад: вялічезная база коду на TypeScript, дзе мільйоны разработчыкаў ўсё дні викорыстоўваюць інструменты для ціеі мовы. Скорачэнне часу повного кампайлявання з адных два хвіліны да прыбліжна дзесяці секунд — значны парадакт; скорачэнне часу чакання на першыя діагназы з прыбліжна семнадцатых секунд да трох гэтых — тое, што можа пачуць усі.
Playwright, адны з проектаў Microsoft для тэставання, пры выкарыстанні стандартной настройкі скорачае час повного кампайлявання з 12,8 секунды да 1,47 секунды. Гэта знову ж такі не значыць, што Playwright запускае Chromium быстрэй. Это значыць, што падтрымка та пераканальвання сэрбера Playwright стаюць набліжна шырэй. Адзін раз, колькі інструментаў для разработчыкаў сама напісана на TypeScript, шырэйшая падтрымка гэтых інструментаў плаціваеся на весь экасыстэму.
Vite ўжо спрацьоввае перагляд і трансформацыю як адзінаковыя задачы
Vite пераважна напісаны на TypeScript, але калі ён выдаёт або складае вашу TypeScript-застосовку, ён не запускае компілятор TypeScript для транспіляцыі кожнага модуля. Сучасны Vite выконвае спецыяльную паўтку трансформацыі і навмесна прыхоўчвае перагляд типаў. Яго дасягнення рекамендуюць запускаты TypeScript окрема, як ентэрпрайзны перагляд:
tsc --noEmit
альбо безперыянна пад час розработы:
tsc --noEmit --watch
Логіка ўсунутая. Для ператворэння файла патрабуецца толькі: адзьмяніць анотацыі, перапісаць калькі структураў, і гэта ўсё. Перакананне типаў патрабуецца знанняў пра весь граф модуляў, таму што змяна ў аднам файле можа нарабіць проблемы ў іншым. Выкананне обох задач у адны крок змушвае шыраную операцыю чакаць на медленную. Таму типовы проект Vite мае два паралельныя шляхі з таго ж выходу:
┌── Vite / Oxc ── transform ──> Browser
TypeScript source ──┤
└── TypeScript ───── type-check
Якща адаптавацца да гэтага падходу, TypeScript 7 не патрэбна стаць найшыльнейшым трансфармацёрам JavaScript, адколькі Vite вже мае інструмент, оптымізаваны для гэтаго. TypeScript можа сфокусавацца на задачы, якой трэба розумець весь программ, і гэта задача тепер выканана значна шыльней. Якщо вы вжываеце гэтую наладку сёньдзе, адным з практычных наследкав ёй яе тое, што памылка типу не зупіняе сервер разработчика; пераканаўцеся, што tsc --noEmit выканана ў CI або ў хуку праз перадвыпуск, каб памылкі не засталіся непазначанымі.
Інструменты JavaScript, напісаныя ў всім, кроме JavaScript
Характэрна ўсюды пазірная тэндэнцыя. Настаўчы практыкі кампілявання Vite вжываюць Rolldown, і як Rolldown, такім чынам Oxc напісаныя на Rust. esbuild ўжо калісьце выбрала Go. Bun рэалізуе вялікія часткі сабе на мове Zig. Тепер да яных прыяўжае і TypeScript з Go.
Это не крытыка JavaScript. Аб’юнктуры для вузэўськага выкарыстоўвання заставаюцца прыемнымі для разработчыкаў JavaScript і TypeScript, тады калі процесы зборкі, аналізу і рашэння задач, якія выкарыстоўваюць большы часа CPU, адбываюцца як у натыўнам кодзе. Разныя слоі маюць разныя трэбаванні, і TypeScript 7 ўсё больш падкрэпляе ідэю выбору мовы рэалізацыі для кожнага слою.
Рантаймы, якія выкарыстоўваюць TypeScript без tsc
Той жа падзел відбываецца і на стороне рантайму. Традыцыйны ментальны модэль проекта на TypeScript — это простая лінія ад выхідных дадзенняў да кампайляра, да JavaScript і ўжо да Node:
TypeScript
↓
tsc
↓
JavaScript
↓
Node.js
У рэальных проектах завжды было больш крокаў, але основная ідея застаўся: Node выкарыстоўваў JavaScript, таму TypeScript спачатку трэба было пераканваты ў JavaScript. Сёньня гэта можна зробіць безпосередна:
node server.ts
Важным моментам ёсць тое, што Node не запускае кампайляр TypeScript. Яго вбудованая падтрымка ўмышлена мінімальная: яна адключае синтаксіс TypeScript, які можна выдаліць, і запускае тое, што застаёцца. Ён не выкананая пераконтролька типоў, а синтаксіс, які вымагае стварэння рэальнага JavaScript (замест таго, каб проста выдаліць анотацыі), не падпадае пад гэты механізм адключэння. Такая заявка з типамі, як гэта:
const port: number = 3000;
фактычна стае такой да выканання:
const port = 3000;
Ключовым словам ёсць „Erasable“. Конструкціі на кшталт enum, namespace з значэнням пад час выканання, а таксама параметры канстрактара ствараюць JavaScript, якога не было ў вачоўнам коде, таму чыстая адзьемка элементаў не можа іх обработаць. TypeScript прысвойвае опцыю кампайляра erasableSyntaxOnly, якая дапамагае пазначыць такія конструкціі, якщо вы хочаце, каб ваш код застаўся сумесным з процэсам адзьемкі типаў; пераканайцеся ў дакументацыі Node і TypeScript пра точнае падходжэнне для вашых версій.
Гэта можлівасць таксама існавала ўчора пры Node 26, таму безпасяроджанне TypeScript не павінна вважацца функцыяй Node 26. Node 26 прыносіць свае сабе прызнакі: Temporal як стандартна настройка, новейшы V8, ўласны значны апдэйт Undici і звычная практыка чысткі пасля выходу новай версіі, але гэта ўжо іншая тэма. Для гэтага абгавору важліва толькі напрамоц: Node все больш спрыяе викорыстоўванню TypeScript як інпуту, які можна спрацоўваць безпосередня, не запускаючы спачатку tsc для стварэння JavaScript.
Bun спрацоўвае з TypeScript як з звычным інпутам
Bun, які ўсё ще наявен у версіях 1.x, з самага пачатку працюе так. Запуск файлу TypeScript выглядае так:
bun server.ts
Ладер Bun адсілае та ператварае синтаксис TypeScript пры выконанні за дапамогою своіх інструментаў. І, як і ранейш, транспіляцыя не є перакрытчыкам типаў. Таму аблікованы патэрн работы з Bun складаецца з двух каманд:
tsc --noEmit
bun server.ts
Першы ўтварае адпаведь на запитанне "Чы рэгламент типаў задовольняе гэты праграма?" Другі ўтварае адпаведь на запитанне "Чы можа гэты праграма выконвацца?" Сучасны Node падтрымлівае такое ж раздзеленне:
tsc --noEmit
node server.ts
У обох случаях час выконання ніколи не чакае на перапрацоўку типаў, а перапрацоўка типаў ніколи не патрабуе стварэння файлаў з рэзультатамі. Памятайце, што праект, які выконваецца такім спосабам, не мае крока будовы, які б випадкова выявіў памылкі типаў; якщо перапрацоўка типаў не ўключена ў CI, гэта проста не адбудзецца.
Задача TypeScript — глыбэйшая разумеўка праграм
Працэс разработкі гадымаў быў складзены з адной лінійкі задач, дзе кампайлер знаходзіўся прымусова межы між напісаннем і выконаннем коду:
Write TypeScript
↓
Compile TypeScript
↓
Run JavaScript
Сучасныя інструменты все больш нагадваюць два напраменні, выходзячы з аднаго і таго ж джерела: адна для разумеўкі і перапрацоўкі, другая для трансформацыі і выканання:
┌── TypeScript ── understand and check
TypeScript source ────────┤
└── Runtime / bundler ── transform and execute
Vite можа выкарыстоўваць Oxc для трансфармацыі коду, пакалі tsc яго пераглядае. Node сама адключае синтаксіс, які можна выдаліць. Bun мае свой загрузчык. Ніякі з гэтых інструментаў не патрабуе TypeScript 7 чы якога-небудзь tsc, каб запусціць вашу аплікацыю. Самэ гэтая прычына заставляе натыўны кампайлер застацца важлівым: найболей выразныя задачы TypeScript больш не заключаюцца у шыранай прыведэнні файлу .ts у формат .js, што іншыя інструменты вже робяць добра. Яго практычная цэннаць крыўдзіцца у пытаннях, якія стосуюцца цэлага програмы, напрыклад:
- Чы ўзаемна сумісныя гэтыя значэнні з кантрактом, да якога яны падаюць?
- Чы рефактораванне не пашкодзіла викорыстоўвальніка ў іншам пакете?
- Чы гэтыя узагальненыя абмежэнні правильныя?
- Да чаго адносіцца гэты симвал, і дзе ўсё інша викорыстоўваецца гэты тип?
- Што павінен запропанаваць рэдаггер як падказку прымоўна тут?
Ёжыдзеўскі адпаведзь на гэтыя патрабаванні выклікае значна большы контэкст, чым проста выдаленне : string з рэчы, і самэ гэта аналіза цэлага програмы — гэта тое, што версія для Go робіць значна быстрэй. Чым глęбэй пазнакоміцца з можлівасцю запуску TypeScript натыўна ў этых інструментах, паглядзіце наш практычны кялік для пераходу на компайляр TypeScript для Go і натыўны запуск.
Галоўныя выводы
- TypeScript 7 — это пераклад існуючага компайляра на Go, а не перадзял праграмавальнага языка; ствараны JavaScript і выконваецкія характэрыстыкі вашай аплікацыі застаюцца незменнымі.
- Прыбыткі бачны ў процесе разработкі: цэлыя запускі зазвычай вядуцца на 8-12 разоў быстрэй, діагназы ў редактары ведуцься набліжна шчыльней, а сервер языка стае стабільнейшым.
--checkers, --builders і --singleThreaded па рэальныя ліміты памяці у системах CI, а не проста максымалізавайце колькасць працоўнікаў без разуму.typescript-eslint можа змусіць вас использоваць TypeScript 6 для дзеярых інтеграцый, пры чым падтрымліваецца робота обох версый паралельна.tsconfig.json, ўбедзіцеся, што ў яму є новыя стандартныя налаштаванні і выдаленыя опцыі (strict, module, types, цэль ES5, класычная метода разв’язвання проблем, форматы AMD/UMD, baseUrl). tsc --noEmit у процес CI.