Avatar ·

Как создать tsconfig.json для TypeScript проекта: пошаговое руководство

Всем привет! Я новичок в TypeScript и никак не могу разобраться с настройкой проекта. У меня есть файл `app.ts`, который я хочу компилировать в JavaScript, но TypeScript ругается на любые мои попытки. Вот что я делаю: 1. Создаю папку проекта. 2. Устанавливаю TypeScript глобально: `npm install -g typescript`. 3. Пытаюсь скомпилировать файл командой `tsc app.ts`. Но компилятор выдает ошибки вроде `Cannot find name 'console'` или `Cannot compile modules unless the '--module' flag is provided`. Я слышал, что нужно создать `tsconfig.json`, но не знаю, как это сделать. Гугл говорит, что можно запустить `tsc --init`, но я не уверен, что это правильный путь. Мой код: ```typescript // app.ts function greet(name: string): string { return `Hello, ${name}!`; } const user = "Alice"; console.log(greet(user)); ``` Подскажите, как правильно сгенерировать `tsconfig.json` и какие базовые настройки туда добавить, чтобы проект заработал? Нужно ли устанавливать TypeScript локально в проект? Объясните, пожалуйста, для новичка. <<>>

Как создать tsconfig.json — полное руководство для начинающих

Вы на правильном пути! tsconfig.json — это файл конфигурации TypeScript, который управляет поведением компилятора. Давайте разберем процесс шаг за шагом.

1. Локальная установка TypeScript (рекомендуется)

Глобальная установка может привести к конфликтам версий в разных проектах. Лучше устанавливать TypeScript локально:

npm init -y
npm install --save-dev typescript

2. Генерация tsconfig.json

Самый простой способ — использовать команду tsc --init. Если TypeScript установлен локально, выполните:

npx tsc --init

Эта команда создаст файл tsconfig.json с базовыми настройками и комментариями. Вот как выглядит минимальная версия:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "outDir": "./dist",
    "rootDir": "./src"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "dist"]
}

3. Объяснение ключевых настроек

  • target — версия JavaScript, в которую компилируется код (ES2020 — современный стандарт)
  • module — система модулей (commonjs для Node.js, esnext для браузеров)
  • strict — включает строгий режим проверки типов (рекомендуется)
  • esModuleInterop — упрощает импорт CommonJS модулей
  • outDir — папка, куда попадет скомпилированный JS
  • rootDir — корневая папка с исходным кодом
  • include — какие файлы компилировать
  • exclude — какие файлы игнорировать

4. Структура проекта

Рекомендуемая структура для вашего примера:

my-project/
├── src/
│   └── app.ts
├── dist/
├── node_modules/
├── package.json
└── tsconfig.json

5. Компиляция и запуск

Переместите ваш app.ts в папку src. Затем:

npx tsc          # компилирует весь проект
node dist/app.js # запускает скомпилированный файл

6. Альтернативный способ — ручное создание

Если tsc --init не подходит, создайте файл вручную:

touch tsconfig.json
# Откройте в редакторе и вставьте конфигурацию выше

7. Решение вашей ошибки с console

Ошибка Cannot find name 'console' возникает, потому что TypeScript не знает о глобальных объектах Node.js. Установите типы:

npm install --save-dev @types/node

После этого console будет распознаваться корректно.

Полный пример package.json

{
  "name": "my-typescript-project",
  "version": "1.0.0",
  "scripts": {
    "build": "tsc",
    "start": "node dist/app.js",
    "dev": "tsc --watch"
  },
  "devDependencies": {
    "typescript": "^5.3.3",
    "@types/node": "^20.10.0"
  }
}

Теперь вы можете запускать npm run build для компиляции и npm start для запуска. Команда npm run dev включит режим отслеживания изменений — файлы будут перекомпилироваться автоматически.

<<>>

Использование ts-node для быстрого запуска без компиляции

Если вы хотите запускать TypeScript код без предварительной компиляции в JavaScript, используйте ts-node. Это особенно удобно на этапе разработки.

Установка:

npm install --save-dev ts-node

Теперь вы можете запускать файлы напрямую:

npx ts-node src/app.ts

Для этого не нужен tsconfig.json — ts-node использует стандартные настройки TypeScript. Но если файл конфигурации есть, он будет применен автоматически.

Дополнительные возможности:

  • Режим разработки с nodemon — установите npm install --save-dev nodemon и добавьте скрипт: "dev": "nodemon --exec ts-node src/app.ts"
  • Использование в production — не рекомендуется, лучше компилировать в JS для производительности

Важно: ts-node требует установки TypeScript в проекте. Если вы используете глобальный TypeScript, могут возникнуть конфликты версий.

Этот подход идеален для небольших проектов, скриптов и прототипов, когда не хочется настраивать полный pipeline компиляции.