Может ли Node.js исполнять файлы TypeScript напрямую?

«Может ли Node.js исполнять файлы TypeScript напрямую?» — вопрос из категории Node.js Core, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, Node.js не может выполнять TypeScript файлы напрямую, так как его движок понимает только JavaScript. Для выполнения TS-кода требуется промежуточная трансформация. Вот основные подходы:

1. Использование ts-node (наиболее популярный способ для разработки):

npm install -D ts-node typescript
npx ts-node script.ts

ts-node компилирует TypeScript в памяти и передает результат в Node.js, что удобно для разработки, но добавляет накладные расходы.

2. Нативные ESM Loaders (Node.js v20+):

node --loader ts-node/esm script.ts

Этот метод использует экспериментальный API загрузчиков модулей.

3. Предварительная компиляция (рекомендуется для продакшена):

# Компиляция всего проекта
npx tsc
# Запуск скомпилированного JavaScript
node dist/script.js

Для продакшена я всегда компилирую TypeScript в JavaScript с помощью tsc, esbuild или swc. Это дает оптимальную производительность и позволяет использовать tree-shaking. В моих проектах настройка сборки обычно включает esbuild для скорости и tsc для проверки типов.