Как запускать TypeScript на бэкенде в 2026
Вопрос
Какие есть способы запускать TypeScript на Node.js в продакшене и в разработке? Что выберете и почему?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Сборка `tsc` (или esbuild/swc) в JS и запуск `node dist/...`: проверенный путь для прода
Dev-раннеры вроде `tsx` для быстрого запуска без сборки
Встроенное стирание типов в Node (type stripping): только стираемый синтаксис, без проверки типов
Проверка типов всегда отдельно: `tsc --noEmit` в CI и в редакторе
`erasableSyntaxOnly` и `verbatimModuleSyntax`, чтобы код был совместим со стиранием
Что могут спросить следом
- Почему не стоит использовать enum в коде под type stripping?
- Как быть с path-алиасами из tsconfig при запуске без сборки?
- Что с source maps и стектрейсами?
Разбор
Для прода основной путь по-прежнему сборка: tsc или быстрый бандлер (esbuild, swc) делают JS, в контейнер едет dist, Node запускает обычный JS. В разработке удобно tsx или встроенное стирание типов: в Node оно появилось как экспериментальное в 22.6 и включено по умолчанию в 23.6 и новее. Стирание только убирает аннотации, поэтому синтаксис, требующий генерации кода (enum, parameter properties, namespace со значениями), не поддерживается без дополнительного флага трансформации, и для совместимости включают erasableSyntaxOnly и verbatimModuleSyntax (импорты типов через import type). Ни один из способов запуска не проверяет типы, поэтому tsc --noEmit обязателен в CI. Ещё учитываю path-алиасы: стирание их не переписывает, лучше imports с # в package.json.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.