Галоўная / Артыкулы / Чаму версія TypeScript 7 з функцыяй Go Port зламала інструменты для перагляду коду та фрэймворкі

Чаму версія TypeScript 7 з функцыяй Go Port зламала інструменты для перагляду коду та фрэймворкі

Пасвячаецца таму, чырэй кампайляр TypeScript 7, які работае быстрей за счытанню на базе Go, прыходзіць з несумэсным API, што спаказвае лінтары, процесы інсталляцыі і апдэйты Vue/Svelte у всім екасистеме.

3041 слоў

Кампайляр выдан. API, які ўзято было на мету выдаты разам з яным, — не выдана.

Microsoft выпусціла TypeScript 7.0 8 ліпеня 2026 года, і загалоўка практычна сама сабой склалася: у дзесяць разоў быстрэй. Кампайляр перайшаў з JavaScript у Go, працюе на калькульаторах-нитках і швыдка обрабоцвае кодавые базы, якія раней трэбавалі два цэлых хвіліны, а тепер завершаюцца раней, чым можна будзе перайсці ў інша вікно. Практычна кожны новы лист, які паводзіўся пра гэты выпуск, пачынаўся тым самым графікам параболізацыі.

Потым разработчыкі насправдзе запусцілі npm install.

Большая частка з іхніх проектаў атрымала швайны бінарны код, які працюўаў на фоне зламанага набору інструментаў. І цей злам не быў незначным — запуск інструменту Lint збіваліся пад час простага чытання значэння атрыбута. Менеджеры пакетаў категорычна адмовіліся ўстановіць пакеты чераз несувярэннасць дыапазону залежнасцей. Проекты на Vue і Svelte важкая было апгрэйдаваць. Чырвёнца пазней большая частка проблем застаўся, і жадных патраплень да ўладкавання не плануецца ні для якой з версый, у якіх вже є даты выходу.

Гэта та частка історыі, якая застала непазначанай, і саме вона фактычна вялікая для таго, каб адначасова вырашыць, чы трэба зараз працаваць над апгрэйдам.

Цяжынка, якую цітуюць усі

Спачатку трэба пахваліць тых, хто дапамогаў у цым, бо павышэння продуктываў — гэта не проста маркетынгавы трюк. Microsoft публікуя свае власныя цыфры тэставання ў анансе выходу версыі, і яны настаўна дэталізаваныя, ўсё можна пераканацца.

Команда адмініструючых заявляе працэсавуючыяся швалі на роўні 8x–12x праз цэлыя версіі продукту, а выкарыстоўванне памяці фактычна зменілася, а не вырасла, што ўсуперак звычнай парадоксальной сітуацыі. Slack паведаміў Microsoft, што перагляд типаў у ўсіх етапах CI-пайплайну зменіўся з прыблізна семі з паловай хвіліні на трохце больш адной хвіліны, а час запуску рэдагара з майже непрыдатнага для ўжытку стану перайшоў на запуск за калікве секунд. Canva паведаміў, што час апылу першага бяга ў рэдагары зменіўся з прыблізна 58 секунд на менш чым 5.

Это справжнія інжынерныя досягнення, рэзультат годзін сталявога працавання. Нічыга з таго, што будзе після, гэта не скасоўвае.

Это была перадача, а не перапісваў

Ёсць тэхнічныя деталі, якія большасць публікацый праігноравала, і самэ гэтыя деталі поясняюць усё іншае.

TypeScript 7 — это перакладчык, а не пачатковая перапісва. Команда пераклала існуючыя файлы кампайляра па фільдзе з TypeScript на Go, выразна захаваючы первоначальную структуру і логіку, ўпэўнюючыся, што функція перакантролювання типа застанецца тыповай. Аднойчы запрацавалі кампайляры версіі 6.0, яны таксама должны запрацаваць аднойчы пад версіяй 7.0. Самэўсёлкі так Microsoft змогла выпусціць кампайляр такага масштабу без большога числа регрэсій у працэздатнасці, і гэта адбіваецца за рахунак справжней дисцыпліны пад час адконання ціх перакладчыкаў.

Але кампайляр на самае працо ўскладнены з двух адзінальных продуктов, які дзелююць адной назвай. Є бінарны файл, які вы запускаеце — tsc. І є бібліятэка, яку іншыя інструменты выкарыстоўваюць як залежнасць. Інструменты для праблэм-фіксаціі, трансформаторы тэстаў, код-моды, якія базуюцца на AST, і перакальчувачы шаблонаў не запускаюць tsc і не парсуюць текст, які ён выдае. У замен яны імпортуюць TypeScript безпасэчна, праходзяць па сынтаксічным дрэве з яго і выкарыстоўваюць інфармацыю пра типы, якая ўжо є ў перакальчувачы.

Перадача версій аддаўала першы продукт без змян. Другі ж ужо ўзагалі не перадавалася.

Сам кампайляр застаўся недзеяным. API, ад якога залежыць кожны супакоўваны інструмент, не пераходзілася разам з ям.

Рэч, спрывучаная пад канцом прыметак выдання

Ёсць справядлівасць да Microsoft: гэта не было сакравана. Якщо прачытаць ананс 7.0, працягваючыся прыблізна на две трэті, пад раздзелам, які распавядае, як запускаць 7.0 разам з 6.0, там ёсць рэчы, пра якія вялікае часць экосістэмы гаворыла ў ліпене: TypeScript 7.0 выходзіць без API.

Это значны прытвор. Microsoft кажа, што стварае новы API і плануе зробіць яго доступным у версіі 7.1. Па словам команды, тепер, калі робота з перакладам завершана, яны знову націянаюць увагу на дадзенне новых функцыяй.

Заявлены темп — новы вылік кожныя тры-чатыры месцы. Якщо гэты графік будзе дотрымваны, версія 7.1 з’явіцца працягваючыся на жанвар. Гэта весь тое, што зараз вядома — яшчо няма падтверджанага часу, калі сам API-заменнік нарэшце будзе готавы.

Прачытайце аанунс з верху да ніжоў, і патэрн стане зрозумелы. Спачатку прыводзіцца табліца, якая паказвае, насколькі быстрэй працюе 7.0. Потым — цітаты з вядомых компаній. Ляжышча Microsoft проста, практычна мімоходом, зазначае, што значны частак экосістэмы інструментаў яшчо проста не можа работаць на гэтыя версію.

Такі порядак быў намеровым рашэнням рэдакцыі, а не спробай падвуць каго-небудзь. Але самэ гэта і ўскладніла роботу багацоў команд, якія адкрылі проблему з API за дапамогою логаў аброшэння ў своіх терміналах, а не з самага аанунсу.

Проблема 12518

Найкорыстнейшым рэзультатам першага тыдня запуску не быў бенчмарк, а адзвіт пра баг.

У дзень, калі новы компайляр стаў доступным для шырокай аудытарыі, хтось, які апдэйтаваў проект Vite плюс React з версіі 6.0.3 на 7.0.2, падаў запыт №12518 проты typescript-eslint, прадаўшы ўсе неабходныя доказы. У запытэ былі задокументаваны два окремыя проблемы.

Першая проблема была тая, што команда npm ci абоўсюды адмовлялася ўстановіць пакет, таму што метаданыя пакета typescript-eslint вказвалі дыапазон залежнасцяў, з якога версія 7.0.2 не падпадала. Другая проблема выклікалася там, што ў тых, хто все-такі намагаўся установіць пакет, ESLint перестаў працаваць унутры typescript-estree пад час будовы програмы, адтолькі што код прабаваў выкарыстоваць атрыбут у API компайляра, якога ў гэтый версіі вялікай меры не існавало.

Адпаведальныя за пакет закрылі гэты запыт. Не таму, што ім было байдужа, а таму, што не было нічога, што можна было бы зробіць.

Якщо чытаць гэты тэкст адзіно, ён можа здацца прыгнічваючым. Але так не ўсё. Адпаведальныя за typescript-eslint не маюць можлівасці саміста выправіць гэту проблему — компонент, які ўможлівіў бы такую праваку, яшчэ не выпусцаны. Закрыцце пытання было проста чыстай фактычной заявой: справжняя робота лежыць на стороне TypeScript 7.1, а не ў самам лінтары. Это значыць, што найпопулярнейшы інструмент TypeScript у экосістэме наразе не можа нічага зрабіць ў паводзе свайго сабеасоблення.

Команда ESLint адкрыла адпаведнае пытанне наступнага дня, падтвердзіла намеры яго рашэння і таксама застрягла, чакаючы той самы неадказны компонент. Адпаведальныя за інструменты Vue знаходзяцца ў той жа ситуацыі. Усе, хто выкарыстоўвае гэтыя інструменты, заблокаваны чераз тую ж невыпусцаную залежнасць.

Радыяус уражэння

Кожны пакет, які імпортуе typescript і выкарыстоўвае яго внутршнія механізмы, падвержаны гэтай проблеме. Конкрэтна:

  • typescript-eslint, а таксама ўсе правіла перапрацоўкі коду, якія выкарыстоўваюць інформацыю пра типы. Гэта спрычынае явныя адхыленні ў момент інсталяцыі або пад час першага запуску — вам не будзе легка ўскрыць гэта.
  • ts-jest і будзь-які трансфармер, створаны на адной з внутршняях функцый компілятора. Гэта спрычынае болей тыхамыя проблемы, якія выражаюцца ў заплутальных памылках трансформаціі, а не ў невялікай памылцы інсталяцыі; гэта, можна сказаць, ўжо горша, таму што здаецца, што проблема ў настройках тэстаў, а не у несувярэннасці версій.
  • ts-morph і будзь-якія спецыяльныя кодамоды, створаныя на яго адной з баз. Гэта самая рызыкаваная категорія. Глęбокая інтроспекцыя типаў може працаваць некоректна без явных сігналоў, ствараючы неявна некоректны выхід замест явнага краху. Аккуратна пераканайцеся, прытаму як запускаце ўсё, што можа зашкодзіць кодбазе.
  • Перакрантальная перапрацоўка шаблонаў, якая падтрымлівае Vue, Svelte, Astro і MDX. Microsoft працягвала ў прыметках да выдання, што гэтыя способы работы, верагатна, нараз не зможуць працаваць пад TypeScript 7, і радзіць застаўся на версіі 6.0 для падтрымкі рэдагара.
  • Перакрантальная перапрацоўка шаблонаў у Angular таксама падлягае гэтай абмежэнню, пры чым існуе офіцыйна задокументаваны спосаб працэўкі: для шыранага пераконтролю наявнасці бягунковых памылак у проекте выкорыстоўваецца версія 7.0 з командной лініі, а ў рэдагары застаецца версія 6.0.
  • Webpack loaders. Старэйшыя версіі ts-loader яшчэ выкорыстоўваюць старую API. Адна з асоб, якія каментавалі гэтае аанунцыяванне, падсумавала загальную настроўку: усі жадаюць апгрэйду, але так как большасць проектаў работае з webpack і ўсё яшчэ няма сумесной API для loaders, усі чакаюць на версію 7.1.
  • Аккуратнаўся да таго, што ў тым списку. Нічога з таго не ёсць спецыяльным чы аэкзотычным інструментам — гэта стандартны набор інструментаў типовай команды фронт-енду, якая працуе сёння.

    Сам кампіляр ў стабільным стане. А экасистема навакола яго — ні. Гэта два разныя станы выдання, якія дзелюць аднолькі номер версіі.

    Адказ Microsoft: установіце два кампіляры адразу

    Microsoft прыгледзеўся гэтым працям і створыў альтернатыўны спосаб, замест таго каб заставіць команды самастайна шукаць рашэння. Яны выпусцілі @typescript/typescript6 — пакет сумеснасці, які містыць екзекуабельны файл tsc6 і вярнюе доступ да API версіі 6.0. Гэта дазволяе старым кампілярам і новым жыць разам, без таго, каб адны з іх перакрылі назву бінара ў другога.

    Прычына, чаму неабходны такі способы адраджэння, заключаецца у тым, што такі інструменты, як typescript-eslint, распазнаюць TypeScript па імени пакета через peer dependency. Таму рэкомендаваны спосаб адраджэння — выкарыстоўваць npm alias, каб перенаправіць гэта імя.

    Полная настройка двойнага кампайляра выглядае так:

    {
      "devDependencies": {
        "@typescript/native": "npm:typescript@^7.0.2",
        "typescript": "npm:@typescript/typescript6@^6.0.2"
      }
    }
    

    Калі гэта налажана, ваш лінтар, трансфармер тэстаў і кодамоды продовжуюць імпортувати typescript як зазвычай і транспарэнтна отрымаюць версію 6.0 пад капотам. У тым часе запуск npx tsc дае версію 7.0, таму вы все ўсё маеце прыбутак у швальнасці там, дзе гэта найболей важліва — у вашым редактары і ў CI.

    Гэта працуе, і за гэта трэба падзякаваць: гэта добра спроектаваны спосаб адраджэння, які быў часткова расказаны ў афіцыйным аанунсе, а не як што-то, што спяльнота мусела рэверс-інжынераваць.

    Усё-такі, гэта два адзельныя варыянты кампайляра, якія знаходзяцца ў однам node_modules, і якія рашуюцца за дапамою аліяса, пра які кожнам новым члену команды павинна быць дадзена адказа, а таксама ёсць канфігурацыя, якую вам зрэшты даведзеся зменіць, калі 7.1 нарэшце будзе выпускана. Называйце це як хочаце: тэхнічны борг без вялікага даты пагашэння.

    Другія пастка для тых, хто прахадзіў 6.0

    Пашто ёсць нехватка API, існуе адзельная пастка для тых команд, якія перайшлі працаваць з версіі 5.x без практыкавання 6.0 спачатку.

    TypeScript 7.0 цалкам прыменяе стандартныя настройкі, якія былі введаны ў 6.0, і кожны паведамленні пра занепады функцый, якія з’явіліся ў 6.0, у 7.0 стае серьёзной памылкай. Усё гэта вырашваецца адразу:

    • strict тепер ўвімкнуты як стандарт.
    • module тепер за замовчаннем ўстановліваецца як esnext.
  • rootDir парадыгмальна значэнне яго — ./, а не значэнне, вычысляванае автаматычна; таму, якщо ваш tsconfig.json знаходзится за межамі папкі src, вам неабходна явна настройка гэтага параметра, інакшы кампайляр неправяце адразуе структуру вашага коду.
  • types парадыгмальна значэнне яго — порожняй масав, а не включэнне всіх можлівых типаў. Якщо ваш код залежыць ад глобальных змяненых, якія ўтвараюцца пакетамі @types, якія былі установлены, вам неабходна або явна указаць назвы гэтых пакетаў, або вярнуць старую працэздатнасць за дапамою параметра ["*"].
  • Некалькі параметраў было выключана абсалютна, а не проста рэкамендавана не вжываць: target: es5, downlevelIteration, moduleResolution: node, baseUrl, а таксама режымы модуляў amd, umd і systemjs. Вжыванне будзь-кага з гэтых параметраў тепер вызывае памылку кампайлявання, і ўсё.
  • З таго списку команда выделяе rootDir і types як два параметры, які з наявнасцю можу застаты людзей неспакоўнымі, і гэта паспаўляе таму, што мы бачым у практыцы. У обох случаях аператывы заполняюцца памилкамі, якія выглядаюць так, нібы сам кампайлер зламаны, а не так, нібы «зменіўся стандартны параметр». Гэта саме тая плутанне, якая прыводзіць да таго, што гэта фіксуецца як баг кампайлера, а не лягчаеся простым зменшэнням налашоўкаў у адной лініі.

    Ешчэ існуець болей спакойныя змены, прызначаныя для тых, хто выконвае маніпуляціі стрэлкамі на рывень типа. Тепер апрантаванне типа шаблонных літералоў лічыць такі символ, як эмодзі, як адну елементацыю, замест таго каб разлучыць яго на два кодаваннія UTF-16. Гэта болей інтуўітывны модель для большасці сцэнарыяў, але гэта змена, якая пашкодзіць будь-якій спецыяльны дапаможніцкі тип у стылі Length, який намераваўся лічыць кодаваннія UTF-16, а не видныя символы.

    Практычны вывад: якщо вы ўсё ў версіі 5.x, не пераходзіце адразу да 7.0. Спачатку перайдзіце на 6.0. Гэта проміжная версія створана саме для таго, каб распаўзці гэты набор змян на два меншыя апдэйты, замест таго каб усе яны былі застосаваны разам.

    Для каго насправды створана гэта версія

    Гэтыя деталі вартаюць таго, каб на яны звернуць увагу.

    Паглядзіце на спіс арганізацыяў, якія тэставалі TypeScript 7 ў першыя дні паўнае выклікання і надавалі ацэнкі ў зв’язку з аанунсам: каманда VS Code, сэрвісы Office, Teams, Power BI ад самай Microsoft, групы Loop і Xbox, а таксама Bloomberg, Canva, Figma, Google, Linear, Miro, Notion, Sentry, Slack і Vercel. Это кодавыя базы, якія налічваюць мільйоны ліній коду, падтрымваныя спецыяльнымі камандамі па стварэнню інфраструктуры, якія працавалі над прыбліжнымі версіямі колькі месцаў і адправлялі проблемы назад да разрабоў першымі.

    Для арганізацыяў такога масштабу выкліканне практычна зменяе спосаб выкарыстоўвання роботы, і ціфры гэта падтверджаюць. Каманда News Services ад самай Microsoft адзвярнулася, што заўсёды эканаміць 400 гадзін на месач, якія раней затрачаліся на чаканне на процесы CI. Калі адна перапачатка перагляду типа займала семь хвілін, ўскорэнне гэтага процесу у разы 8 зміняе ўседзённы ритм працы інжынера.

    Теперыя парабялейце гэта з стартапам на пяць чалавек, якіе выкарыстоўваюць Nuxt з налаштаваннем лінта, якое ведае прызначэнне типаў. Їхня перапачатка пераканалення ўжо складалася з 9 секунд. Апгрэйд даў ім еконамію адносна 8 секунд, а ў зворатнай палаты выкалікаў несправны процес лінта, чыннік пераканалення шаблонаў Vue, які проста не можа запрацаваць, а таксама вынукаў неабходнасць викорыстоўвання аліяса ў package.json, які наступны спецыяліст, які прыўяжаеся да команды, будзе змушаны ўсё раз'ясніць.

    Корыста ад вышэйшай швальносці зрастае ў завіснасты ад розмеру вашай базы кода. Несправнасці ж зовсім не зрастаюць — гэта фіксаваны расход, який дакладваецца незалежна ад таго, чыя у вашам проекте дзесяць файлаў чы дзесяць мільйонаў.

    Нічыя з гэтых рэчаў не адбіваецца з паказваннем паслязледків па-злым спосабам. Гэта проста тое, што выходзіць, калі проект оптымізуецца па тых адзывах, якія ён можа фактычна заўважыць. Большыя кодавыя базы карпорацый былі ў рамках праграмы прадзірвання, таму ўсе іх проблемы былі видныя і можна было ўзняць показнікі яшчэ задаўна перад запускам. Адпаведальныя за экасістэму — пераважна волонатары, якія працуют над інструментамі праблэм-дыягностикі, інтеграцыямі з IDE і інструментамі пабудовы — апусціліся да рашэнняў, у прынятцы якіх не мелі права голасу, а ў замен яны павінны былі прымкнуць к адпаведную шым-структуру для сумасставлення і абяцанне, што проблемы буду выправлены ў версіі 7.1.

    Вялікая кодавая база ператварае гэты апдэйт у вялікую выгоду. Маленькая ж плаціць тыя ж фіксаваныя витраты за значна меньшы рэзультат. Гэта нясамаважанне і є сутніцай усій гэтай справы.

    Перакананне ў гатовасці, на сёння

    Чырвень месяц пасля загальнага доступу — гэта прыблізна тое, як зараз стояць рэчы.

    Якщо вы рассматрываете такі кроки, найменш ризикавым спосабам є запуск 7.0 як другай, не блокуючай процэс контролю типаў у системе CI, праза тым, які ў вас вже є. Це дае рэальныя показнікі часу выпалення та вярытась у стабільнасць, не робячы 7.0 основай для вашага процэсу будовы. Калі оба процесы застануцца у стане «зеленаго» прыбліжна на тыдзень, вы можете перейсці на іншы варыянт.

    Тут немае ніякой награды за тое, што вы станете першымі, хто ўжо викорыстоўвае новую версію, таму важка знаты наявныя параметры налаштавання: па замовчэнню флаг --checkers керуе колькістю паралельных процэсаў контролю типаў, і ў значэнні 4. На сервере CI з обмежаными ресурсамі зазвычай разумней выставіць гэта значэнне на 1 або 2 процэсы, чым залишыць стандартнае значэння.

    Відтворыць проблему за праз пяць хвілін

    Няма нічога з гэтаго, што трэба прыймать на веру, і такога рабіць не трэба — адзінаковасці є настолькі маленькія і шырокія, што ўсё можна навмесна вызваць у тэстовым проекте, які будзе знішчаны пасля тэстаў, прычаму не чапаючыся за тое, што для вас справжняя прыоритетна.

    Пачніце з чыстага шаблона Vite React-TypeScript, дадзіце налаштаванні ESLint, якое ведае прымэры дадзеных, а пасля спробуйце прымусіць выкарыстоўваць новейшы кампайляр раней за іншыя:

    npm create vite@latest ts7-probe -- --template react-ts
    cd ts7-probe
    npm install
    npm install -D typescript-eslint eslint
    npm install -D typescript@7
    

    Большасць людзей сталкаецца з проблемамі вечна пад час інсталявання. Пакет typescript-eslint, які публікуецца, заявляе дыапазон партнерскіх залежнасцей, які не перавышае версію 6.1.0, таму npm адмовляецца ў яго выкарыстоўванні, паказваючы адзінаковасць ERESOLVE у замяну на мякі адзвешчанне. Насправды гэты спосаб адзінаковасці є болей прагледным.

    Яшчэ грубейшыя наследкі праблэмы выступаюць, калі вы перакрыўляеце суперскасу і прыгначваеце установку ў будзь-якім разе. Калі пакеты не су сумэжныя, запуск лінтара спрычынае збой у typescript-estree пад час стварэння програмы, так как выконваецца запуск з доступам да атрыбута, які больш не мае значэння:

    TypeError: Cannot read properties of undefined (reading 'Cjs')
        at .../@typescript-eslint/typescript-estree/dist/create-program/shared.js
    

    Зверніце ўвагу, чаго не сказана ў гэтым запісе. У яму ніколі не згадваецца TypeScript 7, ніколі не пазначаецца несумэжнасць версій, ніколі не пішацца „непадтрымваная настройка“. Це чыста внутраняя крах — што якраз і ўскладніцца ў прыгледзе 12518: апошній прасіў ясную, чытальную памятку пра несумэжнасць, а не стек-трейс, і пакуль гэтае прасіце застаецца нерашаным.

    Тепер застосавце метод з аліям, які быў описаны раней, і запрацавайце тыя ж самыя каманды. Lint зноў працюе, таму што ён тыха супрацоўвае з TypeScript 6.0 у тле, тады як npx tsc сама по сабе яшчэ выкарыстоўвае болей шырокі TypeScript 7.0.

    Калі вы вже налаштаваліся так, цікава будзе запісаць час выконання вашага проекту пад обомі версіямі. Самэ гэта значэння, а не чыё-небудзь іншае тэставанне, павінна вабіць вашы выбор — і яго значэння практычна наверняка будзе зноўшыцься значна менш выражаным, чым показнікі VS Code, проста таму што ваш код не складаецца з двух мільйонаў лінакоў.

    Што я вынес з гэтага

    Тое, што робіць TypeScript 7 адзінаковым прыкладам, — гэта тое, што два суперсучасныя тлумачэння яго ўзгодныя, а большасць тэстаў выбрала лишта аднае з іх.

    Это серьзная частка роботы над кампайлярамі, яка ўсё лета вяртае рэальны час командам, якія традзіцыйна прымусваліся затрымкамі пад час складання. Це таксама выход версіі, якая мела прынесці толькі палову неабходнае, але глыбока ў анансе паведаміла пра гэты факт і залишыла наследкі для адпаведальных за падтрымку, якія не мелі права голасу ў планаванні выходу версій.

    Тое, што была б корыстна — але чаго не было ясна падчас запуску — гэта простая фраза ў верхней частцы: гэтая версія гатова для вашага процесу складання, а не для вашых інструментаў, і самэ гэта означае для вас такое-то. Гэтая фраза тэхнічна была там, але ёй проста не далі месца, яна была захаваная за калькамі пасля таблыцы з показнікамі.

    Версія 7.1 прагне справжньа закрыць гэты прыемак. Пакуль гэтага не будзе, разумны падход ўскорана: выкарыстоўваць шырокаспектнасць там, дзе гэта не каштуе нічога — у вашам редакторы і ў CI, а кожны инструмент, які яшчэ прыманяе кампайляр безпосередна, застаўць такім, які ён.

    Спадневаная літэратура

  • TypeScript 6 і 7: Расумнейшая інференція, а пасуючы перапісваў на базе Go — Дазвольце дазнацца, як TypeScript 6 усунуў ключовыя прасоці інференціі та модернізаваў стандартныя настройкі, стварыўшы падставу для цэлага перапісву кампайляра TypeScript 7 на мове Go.