𝗡𝗼𝗱𝗲.𝗷𝘀 𝟮𝟰 𝗡𝗮𝘁𝗶𝘃𝗲 𝗧𝘆𝗽𝗲𝗦𝗰𝗿𝗶𝗽𝘁
Node.js 24 меняет подход к использованию TypeScript. Теперь вы можете запускать .ts файлы в продакшене без этапа сборки.
Среда выполнения удаляет аннотации типов во время загрузки. Она рассматривает TypeScript как аннотированный JavaScript и выполняет его напрямую. Это избавляет от необходимости транспиляции или бандлинга.
Почему это важно:
- Вам нужен только один «источник истины» (single source of truth).
- Вы избавляетесь от сложности управления директориями
dist. - Ваша среда разработки будет полностью соответствовать продакшену.
Как это работает: Загрузчик модулей перехватывает исходный текст. Он удаляет интерфейсы, аннотации типов и импорты, используемые только для типов. Оставшаяся логика выполняется стандартным движком V8. Трансформированный код сохраняется в кэше модулей, поэтому процесс происходит только один раз при загрузке модуля.
Ограничения, которые нужно знать: Это не полноценная замена вашему конвейеру сборки (build pipeline). Для определенных задач вам все еще понадобятся инструменты.
- Отсутствие проверки типов: Среда выполнения не проверяет ошибки. Чтобы находить баги, вам необходимо запускать
tsc --noEmitв вашем CI-конвейере. - Отсутствие псевдонимов путей (path aliases): Поддержка сопоставлений путей из
tsconfig.jsonотсутствует. - Отсутствие декораторов: Для сложных трансформаций по-прежнему требуется бандлер, например
esbuild. - Отсутствие безопасности во время выполнения: Удаленные типы не обеспечивают никакой защиты при исполнении. Используйте такие библиотеки, как
Zod, для валидации данных.
Когда использовать: Нативная поддержка TypeScript идеально подходит для микросервисов с простыми графами зависимостей. Это повышает скорость развертывания за счет уменьшения количества взаимодействующих компонентов.
Когда стоит придерживаться традиционной сборки: Если вам необходима агрессивная оптимизация, tree shaking или минификация, сохраняйте текущий конвейер сборки. Крупные приложения со сложными требованиями к сборке по-прежнему получат больше выгоды от оптимизированных JavaScript-бандлов.
Как настроить: Чтобы стек вызовов оставался читаемым, используйте флаг source maps.
Пример команды: node --enable-source-maps src/server.ts
Это позволит вам отлаживать ошибки, используя номера строк из вашего исходного TypeScript-кода.