Запуск TypeScript напрямую в Node.js
Хорошие новости: в новых версиях Node.js можно запускать .ts-файлы напрямую — без ts-node, tsx или ручной сборки.
| Версия | Изменение |
|---|---|
| v22.6.0 | Появилась базовая поддержка type-stripping |
| v22.7.0 | Добавлен флаг --experimental-transform-types |
| v23.6.0 | Удаление аннотации типов включено по умолчанию |
| v24.3.0 | Функция больше не считается экспериментальной |
Подробнее о нативной поддержке TypeScript в Node.js — в официальной документации.
Что изменилось
- Node.js сам удаляет аннотации типов (type stripping), оставляя чистый JavaScript.
- Флаг
--experimental-strip-typesтеперь не обязателен — он активен по умолчанию. При необходимости его можно отключить с помощью--no-experimental-strip-types. - Если используются конструкции, требующие транспиляции (
enum,namespace), потребуется флаг--experimental-transform-types.
Пример запуска
node --experimental-transform-types index.tsКак писать совместимый код
В TypeScript 5.8 появился новый флаг erasableSyntaxOnly. Он запрещает конструкции, которые Node.js не сможет вырезать. Добавив этот параметр в tsconfig.json, редактор предупредит вас о неподдерживаемом коде.
Кому это пригодится
Крупные проекты на TypeScript, которые активно используют namespace, enum и прочие трансформируемые конструкции, всё равно останутся на привычных инструментах вроде ts-node, tsx или полноценной сборки через tsc — и это нормально. Но для маленьких утилит, тестовых скриптов и инструментов возможность просто запустить node script.ts — отличный способ сэкономить время и не настраивать дополнительное окружение.
