Ответ
Код TypeScript не выполняется напрямую в Node.js. Сначала он компилируется в чистый JavaScript с помощью компилятора tsc (TypeScript Compiler), а затем выполняется скомпилированный JavaScript-код.
Процесс:
-
Компиляция:
tsc index.tsЭта команда создаст файл
index.js(или другой, указанный в конфигурацииtsconfig.json). -
Запуск:
node index.jsNode.js выполняет полученный JavaScript-файл.
Практические подходы в разработке:
-
Прямой запуск с
ts-node: Для разработки часто используютts-node, который компилирует и выполняет TypeScript код в памяти, без создания промежуточного.jsфайла.npx ts-node index.ts -
Сборка проекта: В production-среде используется сборка через
tsc(часто с флагом--project), а затем запускается скомпилированная папкаdist/. -
Конфигурация: Поведение компилятора настраивается в
tsconfig.json. Например, можно указать целевую версию ECMAScript (target:ES2020) или модульную систему (module:commonjs).
Ключевой момент: Проверка типов TypeScript происходит только на этапе компиляции. Во время выполнения в Node.js работают только JavaScript-конструкции.
Ответ 18+ 🔞
Давай разберёмся, как эта штука работает, а то у некоторых мозги уже закипают, как будто они в микроволновке суп греют.
Вот смотри, TypeScript — это такой занудный надзиратель, который стоит над JavaScript и орёт: «А ну-то, ёпта, типы объяви, каркалыга! Не туда переменную суёшь!». Но Node.js этот надзиратель в рот его чих-пых не понимает. Ему подавай чистый, беспримесный JS.
Поэтому процесс всегда двухэтапный, как поход в сортир с газеткой:
-
Компиляция (Превращение зануды в нормального пацана). Ты пишешь свой
index.ts, а потом командуешь компилятору:tsc index.tsОн хватает твой красивый типизированный код, вытряхивает из него все эти
: stringиinterface, и выдаёт на гора обычныйindex.js. Всё, надзиратель сделал свою работу и пошёл спать. -
Запуск (Работа для настоящих мужиков). А вот теперь Node.js, который доверия ебать ноль ко всяким умным типам, с радостью хавает получившийся JS:
node index.jsИ поехали.
Как все это делают умные дядьки в реальной жизни, чтобы не сойти с ума:
-
Для быстрых наскоков —
ts-node. Это как одноразовый стаканчик. Не надо мыть, компилирует и сразу запускает в памяти. Удобно, когда тестируешь какую-то хуйню.npx ts-node index.ts -
Для серьёзных дел — сборка. Когда проект надо выкатывать, его сначала взъебывают компилятором (
tsc), получают чистую папкуdist/, а уж потом эту папку и запускают. Всё по-взрослому. -
Волшебная бумажка
tsconfig.json. Это настройки для того самого надзирателя. Там ему указывают: «Слушай сюда, мудя, компилируй мне в такой-то стандарт JavaScript, модули делай такими-то». Без неё он вообще хуй с горы сделает, что захочет.
Главное, что надо вынести, чтобы не охуеть потом:
Вся эта магия с типами, из-за которой ты терпения ноль ебать уже, работает ТОЛЬКО когда код компилируется. Как только получился .js файл — всё, поезд ушёл. Node.js бегает по нему и видит только голый JavaScript. Если где-то в рантайме прилетит не тот тип — будет тебе, чувак, хиросима и нигерсраки, и надзиратель тебе уже не поможет. Он свою смену отбыл.