Как я ускорил TypeScript-типы в 15.7 раза

Джерело:
Хабрахабр / Захабренные / Тематические / Посты

Дата публікації:
17/08/2026 10:03

Постійна адреса новини:
http://www.vsinovyny.com/13147245

Как я ускорил TypeScript-типы в 15.7 раза

 

17/08/2026 10:03 // Хабрахабр / Захабренные / Тематические / Посты

Иногда TypeScript думает мучительно долго. У меня это вылезло не самым приятным способом: @_chenglou — он работал над React, ReasonML и ReScript, а сейчас над Midjourney — завёл в моей библиотеке схем issue «Large TS types cause type inference slowdown».

Ну… неприятно. Но я знал, что в системе типов TS люди собирали и не такое, вплоть до Doom, — значит, тормоза лечатся, а не заложены в фундамент.

Дальше всё оказалось довольно механически. Сначала тесты на типы, чтобы ничего не сломать молча: оптимизация типов легко превращает { a: string } в { a?: string }, и никто вам об этом не сообщит. Потом замеры через @ark/attest от создателей ArkType — он считает, во сколько инстанцирований типов обходится выражение, и фиксирует это как бейзлайн, который дальше можно занести в CI. И только после этого — сама оптимизация.

Фикс в итоге оказался на одну строчку. S.Output матчился по всему типу Schema<…> — большому объекту с перегрузками, пересечённому с юнионом всех вариантов схемы, — хотя готовый тип всё это время лежал в соседнем поле ~standard. Достаточно было заглянуть сразу туда.

Извлечение типа стало дешевле в 15.7 раза и перестало зависеть от размера схемы. В статье — таблица со всеми замерами до и после, код тестов и бенчмарков и рецепт, который можно применить к своему проекту.

Читать далее

 

» Читати повністю

 

« Наступна новина з архіву
Vec и Vec — это две разные функции. И линкер это не чинит
  Попередня новина з архіву
Римская империя: дороги и дома
»

 

 
© 2026 www.vsinovyny.com