Добавляем TypeScript в проект
-
Предположим мы добавить к текущему или новому проекту на
JS
строгую типизацию.
Для этого выполним команду и установим его с флагом--save-dev
(для компиляцииTypeScript
вJS
) :npm install --save-dev typescript
Работу самого компилятора TypeScript можно настроить, для этого нам потребуется конфигурационный файл с настройками.
В этом нам поможет утилитаtsc
:./node_modules/.bin/tsc --init
После выполнения команды в корне проекта должен появиться файл
tsconfig.json
:Расширения файлов следующее
.ts
.
Далее я предоставлю структуру простого проекта. Все файлы исходного кода находятся в папке
src
и написаны на TypeScript.Файлы сборки находиться в папке
dist
.Проект |--dist | |--index.js | |--index.html | |--user | | |--name.js | | |--photo.jpg |--src | |--index.ts | |--index.html | |--user | | |--name.ts | | |--photo.jpg |--package.json
Обратим теперь свое внимание на файл
package.json
, разберем нюанс.Внутри есть параметр
main
— это точка входа нашего приложения. Если мы используем TypeScript, то в этом параметре требуется указать путь к скомпилированному файлу.Пример конфигурации:
{ "name": "my-project", "version": "1.0.0", "main": "dist/index.js", // путь к скомпилированному файлу "scripts": { "build": "tsc", // команда для компиляции TypeScript "start": "node dist/index.js" }, "devDependencies": { "typescript": "^5.9.2" } }
Запускаем TypeScript
Далее для запуска серверного TypeScript в режиме разработки может быть полезен инструмент
ts-node
. Этот пакет объединяет сборку черезtsc
и запуск с помощью Node.JS.Так можно миновать компиляцию проекта в
dist
и запустить его напрямую.Для запуска серверного TypeScript в режиме разработки можем использовать инструмент
ts-node
, данный пакет объединяет сборку черезtsc
и запускается при помощи node.js.Давайте установим
ts-node
:npm install --save-dev ts-node
Создадим для примера TypeScript файл -
script.ts
:// script.ts const user: string = 'User'; console.log(user);
Не забудем добавить команду для запуска в package.json:
{ "scripts": { "start": "ts-node ./script.ts", }, }
Все готово, можно запускать!
> npm start User
Для примера также приложу полный файл package.json:
{ "scripts": { "start": "ts-node ./script.ts", }, "devDependencies": { "ts-node": "^10.9.2", "typescript": "^5.9.2" } }
На этом все! Теперь мы можем использовать полноценно TypeScript в своих проектах.
-
через tsx удобнее всего запускать
-
K kirilljsx сослался на эту тему в
-
Про компиляцию написал в этой теме.
-
вот тема:
Запуск Typescript в Node js без сборки и сложных конфиговВот сводная, кратко объясняющая разные способы запуска
Возможность tsx ts-node node --experimental-strip-types Принцип работы Самостоятельный транспайлер (esbuild), запускает «как есть» без отдельного tsc. Использует компилятор TypeScript (можно esbuild/swc), но требует зависимости @swc/core
илиttypescript
для скорости.Встроенный «strip-only» проход: вырезает аннотации типов и подсасывает оставшийся JS. Поддержка ESM «из коробки» ( import
,import.meta.url
,package.json "type": "module"
).Нужен флаг --esm
или"module": "ESNext"
в tsconfig +"type": "module"
в package.json.Полностью нативный ESM – работает ровно как обычный Node. Поддерживаемые версии Node.js 16.17+ (LTS). 14+, но быстрый SWC-путь только с 18+. 22.3+ (экспериментальный флаг). source-maps / отладка Генерирует встроенные source maps, работает с --inspect. Генерирует source maps, но иногда требует доп. настроек. Source maps не выдаёт – отладка только по «обрезанному» JS. Тип-чекинг Нет (только транспайл). Да, если не отключить transpileOnly
.Нет (только strip). Итог Самый быстрый «1-командный» способ запуска TS без компиляции. Универсальный, но чуть сложнее в настройке и медленнее. Почти «zero-deps», но пока экспериментален и без диагностики типов. Особенно важно обратить внимание на ES модули, т.к они обычно встречаются в любом не helloworld коде, и tsx их нормально жует без доп. настроек. Еще важно, что
node --experimental-strip-types
пока не полностью поддерживает весь синтаксис ts, напримерenum
-
K kirilljsx сослался на эту тему в
© 2024 - 2025 ExLends, Inc. Все права защищены.