Запуск 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
— отличный способ сэкономить время и не настраивать дополнительное окружение.