Гид по технологиям

Как настроить TypeScript в проекте Node.js

6 min read TypeScript Обновлено 06 Jan 2026
TypeScript в Node.js: настройка и запуск
TypeScript в Node.js: настройка и запуск

TypeScript добавляет строгую типизацию и улучшает масштабируемость Node.js‑проектов. В этой статье пошагово показано: установка зависимостей, настройка tsconfig.json, скрипты в package.json, запуск в режиме разработки и сборка в папку dist. В конце — чеклисты, варианты альтернатив и критерии приёмки.

Тёмный монитор с кодом TypeScript в редакторе VSCode.

Что такое TypeScript?

TypeScript — это надмножество JavaScript с компиляцией и строгой системой типов, поддерживаемое Microsoft. Код на TypeScript транслируется в JavaScript (т.н. transpile) и затем выполняется в Node.js или в браузере.

Ключевая польза: типы помогают ловить ошибки на этапе компиляции, что снижает вероятность багов в рантайме. TypeScript подходит для функционального и объектно‑ориентированного стиля, что делает его удобным для крупных проектов и микросервисной архитектуры.

Краткое определение терминов

  • Транспиляция: преобразование TypeScript в JavaScript.
  • tsconfig.json: файл конфигурации компилятора TypeScript.

Требования перед началом

  • Установленный Node.js и npm.
  • Терминал и базовый редактор кода (VSCode рекомендован, но не обязателен).

Примечание: если вы используете контейнеры или CI, убедитесь, что версия Node.js в окружении совместима с target, указанным в tsconfig.json.

Установка и инициализация проекта

  1. Создайте папку проекта и инициализируйте package.json:
npm init
  1. Установите TypeScript как dev‑зависимость:
npm i -D typescript
  1. Если в проекте будет Express, добавьте типы для него:
npm i -D @types/express
  1. Инициализируйте файл конфигурации компилятора:
npx tsc --init
  1. Установите сам Express (опционально — если нужен HTTP‑сервер):
npm i express
  1. Для разработки удобно иметь автоматическую перезагрузку сервера. Популярные варианты:
  • nodemon (можно установить глобально или как dev‑зависимость)
  • ts-node-dev или ts-node + nodemon

Глобальная установка nodemon (опция):

npm i -g nodemon

Но безопаснее установить локально в devDependencies:

npm i -D nodemon

Важно: глобальная установка требует админских прав и усложняет воспроизводимость окружения на CI/в командах. Поэтому рекомендую локальную dev‑зависимость.

Базовая конфигурация tsconfig.json

Ниже — минимальная и удобная стартовая конфигурация. Вы можете заменить содержимое tsconfig.json этим блоком:

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist"
  },
  "lib": ["es2015"]
}

Разбор ключевых опций:

  • module: определяет формат модулей (commonjs для Node.js).
  • esModuleInterop: упрощает импорт пакетов, которые используют default/interop экспорт.
  • target: версия JS, в которую транслируется код.
  • moduleResolution: способ поиска модулей («node» для npm).
  • sourceMap: полезно для отладки — соотносит исходный .ts с .js.
  • outDir: папка, в которую попадёт JS после сборки.

Рекомендации по жесткости типов (опционально):

Добавьте в compilerOptions:

"strict": true,
"noImplicitAny": true,
"skipLibCheck": true
  • strict включает набор строгих проверок типов.
  • skipLibCheck ускоряет сборку, пропуская проверку типов в node_modules.

Пример package.json и скриптов

После установки пакетов package.json будет содержать зависимости и devDependencies. Например, добавьте в раздел scripts следующее:

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "npx tsc",
    "start": "node ./dist/app.js",
    "dist": "tsc -p .",
    "dev": "nodemon ./src/app.ts",
    "type": "module"
}

Пояснения:

  • build / dist: запускают компилятор и создают папку dist.
  • start: запускает уже скомпилированный файл из dist.
  • dev: чаще всего запускает nodemon или ts-node-dev для быстрой разработки с перезагрузкой.

Содержимое package.json в редакторе

Важно: строка “type”: “module” переводит проект на ES‑modules — в этом случае путь entry в package.json и конфигурация импорта/экспорта потребуют корректировок. Если вы используете commonjs, лучше не указывать type: module.

Пример простой структуры проекта

Рекомендуемая простая структура:

  • package.json
  • tsconfig.json
  • src/
    • app.ts
  • dist/ (создаётся после сборки)

Финальная структура проекта и package.json

Пример кода сервера в src/app.ts

Сохраните этот код в src/app.ts:

import express, { Request, Response } from 'express'

const app = express()

app.get('/', async (req: Request, res: Response) => {
    console.log('Hello world')
    res.send('Hello world')
})

const port = 8080

app.listen(port, (): void => {
    console.log(`App is listening at http://localhost:${port}`)
})

Запустите в режиме разработки:

npm run dev

Откройте http://localhost:8080 — вы увидите “Hello world”.

Сборка и запуск продакшн сборки

Соберите проект:

npm run build

Запустите собранный код:

npm start

Файлы, которые появятся в dist — это app.js и app.js.map (если включён sourceMap). Если вы используете контейнеризацию, добавьте шаг сборки в Dockerfile и запускайте node ./dist/app.js.

Частые альтернативы и улучшения

  • ts-node / ts-node-dev: позволяют запускать .ts без явной сборки — удобно для разработки.
  • Babel: можно использовать вместе с TypeScript для некоторых целей трансформации.
  • tsc-watch: удобен для автоматической перекомпиляции при изменениях.

Когда TypeScript может быть избыточен

  • Для простых скриптов и однофайловых утилит добавление типов может замедлить разработку.
  • В проектах с сильной динамикой типов, где часто используется eval/динамические структуры, организация типов может потребовать много усилий.

Проверка и отладка

  • Используйте source maps для отладки в VSCode: breakpoint будет работать в .ts.
  • Включайте “noImplicitAny” и “strict” постепенно: сначала выявляйте критичные места, затем усиливайте строгие опции.

Чеклист перед деплоем

  • Стабильная сборка: npm run build проходит без ошибок.
  • Тесты (если есть) проходят в CI.
  • Логи не раскрывают чувствительной информации.
  • Правильно настроены переменные окружения и порт.
  • sourceMap отключён в продакшне, если это политика безопасности.

Ролевые обязанности при внедрении

  • Разработчик: добавить типы, настроить tsconfig, написать unit‑тесты.
  • DevOps: включить шаг сборки в CI/CD, следить за версиями Node.js в окружениях.
  • Тестировщик: проверить поведение API после транспиляции.

Критерии приёмки

  1. npm run build завершает работу без ошибок.
  2. npm start запускает сервер и отвечает корректно на ключевые маршруты.
  3. Режим разработки (npm run dev) автоматически перезагружает сервер при изменениях.
  4. Отсутствуют утечки секретов в логах и исходниках.

Маленькая методология внедрения (4 шага)

  1. Инициализация: npm init, npx tsc –init.
  2. Локальная подготовка: установить typescript, типы для внешних библиотек и nodemon/ts-node-dev.
  3. Миграция кода: по мере необходимости добавлять типы в ключевые модули.
  4. CI и продакшн: добавить npm run build в пайплайн и протестировать контейнер/среду выполнения.

Мини‑шпаргалка настроек tsconfig

  • outDir — куда кладётся собранный JS.
  • rootDir — корень исходников (если нужен).
  • sourceMap — true для разработки, false в проде.
  • module — commonjs или esnext в зависимости от окружения.

Маленькая галерея крайних случаев

  • Использование type: module требует изменить импорты на import x from ‘x’ и обновить расширения в некоторых случаях.
  • Если зависимости имеют конфликтующие типы, временно используйте skipLibCheck: true.

Примерный playbook для быстрого старта

  1. git clone / init.
  2. npm i.
  3. npx tsc –init (или заменить содержимое tsconfig).
  4. создать src/app.ts с примером сервера.
  5. настроить scripts в package.json.
  6. npm run dev — проверка.
  7. npm run build && npm start — проверка сборки.

Decision flowchart (Mermaid)

flowchart TD
  A[Начало] --> B{Нужна быстрая разработка?}
  B -- Да --> C[Используйте ts-node-dev или nodemon + ts-node]
  B -- Нет --> D{Нужен контейнер/CI?}
  D -- Да --> E[Соберите через npm run build и запускайте node ./dist/app.js]
  D -- Нет --> C
  C --> F[Далее: добавить типы и мигрировать]
  E --> F

Короткий глоссарий

  • tsconfig — конфигурация компилятора TypeScript.
  • transpile — преобразование TypeScript в JavaScript.
  • sourceMap — карта для отладки, связывающая .ts и .js.

Важные заметки

  • Лучше устанавливать инструменты разработки (nodemon, ts-node-dev) как dev‑зависимости, чтобы окружение было воспроизводимым.
  • При использовании “type”: “module” проверяйте работу импортов и расширений файлов.

Итог

TypeScript в Node.js повышает надёжность кода и упрощает поддержку масштабных проектов. Для старта достаточно нескольких команд: установка TypeScript, инициализация tsconfig.json, базовые скрипты в package.json и создание src/app.ts. После этого вы можете постепенно усиливать строгую типизацию и интегрировать сборку в CI. Следуйте чеклисту и критериям приёмки, чтобы избежать типичных ошибок при релизе.

Полезные ссылки и дальнейшие шаги

  • Рассмотрите ts-node-dev для более гладкого цикла разработки.
  • Приводите конфигурации сборки в соответствие с CI/CD и контейнерами.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство