Как исполняется код на TypeScript в Node.js?

Ответ

Код TypeScript не выполняется напрямую в Node.js. Сначала он компилируется в чистый JavaScript с помощью компилятора tsc (TypeScript Compiler), а затем выполняется скомпилированный JavaScript-код.

Процесс:

  1. Компиляция:

    tsc index.ts

    Эта команда создаст файл index.js (или другой, указанный в конфигурации tsconfig.json).

  2. Запуск:

    node index.js

    Node.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.

Поэтому процесс всегда двухэтапный, как поход в сортир с газеткой:

  1. Компиляция (Превращение зануды в нормального пацана). Ты пишешь свой index.ts, а потом командуешь компилятору:

    tsc index.ts

    Он хватает твой красивый типизированный код, вытряхивает из него все эти : string и interface, и выдаёт на гора обычный index.js. Всё, надзиратель сделал свою работу и пошёл спать.

  2. Запуск (Работа для настоящих мужиков). А вот теперь Node.js, который доверия ебать ноль ко всяким умным типам, с радостью хавает получившийся JS:

    node index.js

    И поехали.

Как все это делают умные дядьки в реальной жизни, чтобы не сойти с ума:

  • Для быстрых наскоков — ts-node. Это как одноразовый стаканчик. Не надо мыть, компилирует и сразу запускает в памяти. Удобно, когда тестируешь какую-то хуйню.

    npx ts-node index.ts
  • Для серьёзных дел — сборка. Когда проект надо выкатывать, его сначала взъебывают компилятором (tsc), получают чистую папку dist/, а уж потом эту папку и запускают. Всё по-взрослому.

  • Волшебная бумажка tsconfig.json. Это настройки для того самого надзирателя. Там ему указывают: «Слушай сюда, мудя, компилируй мне в такой-то стандарт JavaScript, модули делай такими-то». Без неё он вообще хуй с горы сделает, что захочет.

Главное, что надо вынести, чтобы не охуеть потом: Вся эта магия с типами, из-за которой ты терпения ноль ебать уже, работает ТОЛЬКО когда код компилируется. Как только получился .js файл — всё, поезд ушёл. Node.js бегает по нему и видит только голый JavaScript. Если где-то в рантайме прилетит не тот тип — будет тебе, чувак, хиросима и нигерсраки, и надзиратель тебе уже не поможет. Он свою смену отбыл.