2. TypeScript ломает zero-deps и замедляет цикл разработки

Компиляция — это цена. Даже если ты её не замечаешь. Для запуска TS-кода тебе нужно:

  • tsconfig.json;
  • транспиляция (tsc, swc, esbuild);
  • типы зависимостей (@types/…);
  • поддержка ESM или CommonJS;
  • линтер с типами;
  • конфиг для тестов, алиасов, runtime-импорта.

Каждый шаг — точка отказа. Любое несовпадение версий, любые нестыковки — и пайплайн падает.

Zero-deps становится невозможен: язык требует инфраструктуру.

Даже с Node.js v23.6.0, где TypeScript встроен на уровне рантайма, остаётся всё то же: конфигурация, типы, source maps, IDE-интеграция.

Это не «убрали сборку». Это встроили другой сборщик. Бремя осталось. Чистый JS запускается сразу. TS — только после обвязки. Дольше цикл разработки

TypeScript ломает быстрый цикл:

написал → запустил → исправил → повторил.

Становится: написал → собрал → подправил конфиг → проверил типы → запустил → проверил пути → дебажил через мапы → исправил → пересобрал.

Каждый шаг замедляет итерации. Особенно в системных проектах, где:

  • код быстро меняется;
  • архитектура нестабильна;
  • важна предсказуемость запуска.

Ухудшение DX

Developer Experience — это не «удобно писать код в IDE». Это: быстро читать, быстро запускать, быстро менять.

С TS:

  • IDE может не видеть типы до полной сборки;
  • tsc может упасть из-за файла, к которому ты не прикасался;
  • линтеры требуют доп. плагинов и синхронизации с tsconfig;
  • ошибки появляются там, где их нет на runtime. **TS вставляет прослойку между мыслью и результатом. JS — работает напрямую.

Отладка — через боль**

TypeScript ломает прозрачность рантайма:

  • source maps не всегда точные;
  • стеки уводят в dist/, не в исходник;
  • console.log работает не там, где ты пишешь;
  • hot reload требует костылей;
  • для запуска кода из ./src тебе нужно убедиться, что ./dist актуален.

Тормозит командную работ Любой merge может:

  • поломать сборку;
  • привести к конфликту типов;
  • зацепить @types/…, которые подтянулись транзитивно;
  • потребовать пересогласования alias.

Проект перестаёт быть “просто нодой”. Он превращается в конвейер, который надо всё время чинить

Что в итоге?

TypeScript даёт мнимую стабильность на длинном горизонте. Но за это ты платишь: скоростью, простотой, прозрачностью.

Если ты пишешь system-level tooling, оркестратор, сервер или CLI — TypeScript может быть не помощником, а помехой. Чем ближе к ядру — тем важнее zero-deps. И тем дороже каждая секунда, потерянная на сборку.