JavaRush/Курсы/Модуль 2: Fullstack/Введение в Node.js и TypeScript

Введение в Node.js и TypeScript

Открыта

1.1 Знакомство с Node.js

Node.js — это среда выполнения JavaScript, которая позволяет использовать JavaScript вне браузера, на сервере. TypeScript — это язык-надмножество JavaScript, которое компилируется в чистый JavaScript. Использование TypeScript с Node.js позволяет разработчикам писать более надежный и поддерживаемый код благодаря статической типизации и остальным возможностям языка.

Почему стоит использовать TypeScript с Node.js?

  1. Статическая типизация: позволяет обнаруживать ошибки на этапе компиляции.
  2. Современные возможности JavaScript: поддержка последних стандартов ECMAScript.
  3. Улучшенное автодополнение и рефакторинг: инструменты разработки, такие как Visual Studio Code, предоставляют более точное автодополнение и мощные возможности рефакторинга.
  4. Поддержка крупных проектов: четкая типизация и модули помогают в организации и поддержке больших кодовых баз.
Важно!
TypeScript ценен не как вещь в себе, а как инструмент, который очень сильно упрощает работу над сложными проектами и технологиями. Весь его потенциал раскрывается именно в сочетании с другими фреймворками и библиотеками. Из этого уровня вы узнаете о таких библиотеках, но совсем немного. По-настоящему вы сможете познакомиться с ними в модулях 3–5.

1.2 Настройка проекта Node.js с TypeScript

Установка Node.js и npm

Для начала убедитесь, что у вас установлены Node.js и npm. Вы можете скачать их с официального сайта Node.js.

Создание нового проекта

Создайте новую папку для вашего проекта и инициализируйте npm:

Terminal
mkdir my-node-ts-app
cd my-node-ts-app
npm init -y

Установка TypeScript и необходимых зависимостей

Установите TypeScript и необходимые типы для Node.js:

Terminal
npm install typescript ts-node @types/node --save-dev

Где:

  • typescript: компилятор TypeScript
  • ts-node: транслятор TypeScript, который позволяет выполнять TypeScript код без предварительной компиляции
  • @types/node: декларации типов для Node.js, необходимые для корректной работы TypeScript

1.3 Создание конфигурационного файла tsconfig.json

Создайте файл tsconfig.json в корне проекта. Этот файл будет содержать настройки компилятора TypeScript.

Пример tsconfig.json:

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

Где:

  • target: определяет версию ECMAScript, в которую будет компилироваться TypeScript
  • module: указывает модульную систему для компиляции (CommonJS используется в Node.js)
  • outDir: папка, куда будут компилироваться файлы
  • rootDir: корневая папка исходного кода
  • strict: включает все строгие проверки TypeScript
  • esModuleInterop: обеспечивает совместимость с модулями ES
  • skipLibCheck: пропускает проверку типов библиотек

Создание структуры проекта

Создайте папку src для вашего исходного кода:

Terminal
mkdir src

1.4 Создание базового примера

Создайте файл src/index.ts с простым примером.

Пример src/index.ts:

TypeScript
// Импортируем модуль http, необходимый для создания сервера
import http from 'http';

// Объявляем переменную для IP-адреса сервера
const hostname: string = '127.0.0.1';

// Объявляем переменную для порта, на котором сервер будет ожидать запросы
const port: number = 3000;

// Создаем сервер, который обрабатывает входящие запросы и отправляет ответы
const server: http.Server = http.createServer((req: http.IncomingMessage, res: http.ServerResponse) => {
  res.statusCode = 200; // Устанавливаем статус ответа 200 (успешно)
  res.setHeader('Content-Type', 'text/plain'); // Устанавливаем заголовок ответа (тип содержимого — текст)
  res.end('Hello, TypeScript with Node.js!\n'); // Отправляем ответ с текстом
});

// Запускаем сервер и начинаем прослушивание запросов на указанном IP-адресе и порту
server.listen(port, hostname, () => {
  // Когда сервер запущен, выводим сообщение в консоль
  console.log(`Server running at http://${hostname}:${port}/`);
});

Этот код создает простой HTTP сервер, который отвечает на все запросы строкой "Hello, TypeScript with Node.js!".

Добавление скриптов для сборки и запуска

Добавьте скрипты в файл package.json для удобного запуска и компиляции проекта.

Пример package.json:

JSON
{
  "name": "my-node-ts-app",
  "version": "1.0.0",
  "main": "dist/index.js",
  "scripts": {
    "start": "ts-node src/index.ts",
    "build": "tsc"
  },
  "devDependencies": {
    "@types/node": "^14.14.31",
    "ts-node": "^9.1.1",
    "typescript": "^4.1.3"
  }
}

Где:

  • start: запускает проект с использованием ts-node
  • build: компилирует проект в JavaScript с помощью tsc

Запуск проекта

Запустите проект с использованием команды npm start.

Terminal
npm start

Вы увидите сообщение о том, что сервер запущен, и сможете открыть браузер и перейти по адресу http://127.0.0.1:3000, чтобы увидеть ответ сервера.

1.5 Базовые примеры работы с TypeScript в Node.js

Работа с модулями

TypeScript поддерживает модульную систему CommonJS, используемую в Node.js. Вы можете создавать модули и импортировать их в другие файлы.

Примеры создания и использования модуля

src/logger.ts:

TypeScript
export function log(message: string): void {
  console.log(`[LOG]: ${message}`);
}

src/index.ts:

TypeScript
import { log } from './logger';
log('This is a log message from the logger module');

Использование интерфейсов и классов

TypeScript позволяет определять интерфейсы и классы для создания более структурированного и типизированного кода.

Примеры использования интерфейсов и классов

src/user.ts:

TypeScript
export interface User {
  id: number;
  name: string;
}

export class UserService {
  private users: User[] = [];

  addUser(user: User): void {
    this.users.push(user);
  }

  getUsers(): User[] {
    return this.users;
  }
}

src/index.ts:

TypeScript
import { User, UserService } from './user';

const userService = new UserService();

const user: User = {
  id: 1,
  name: 'John Doe'
};

userService.addUser(user);
console.log(userService.getUsers());

1.6 Асинхронное программирование

Node.js широко использует асинхронное программирование с помощью колбеков, промисов и async/await. TypeScript поддерживает все эти методы.

Примеры использования async/await

src/fetchData.ts:

TypeScript
import fetch from 'node-fetch';

export async function fetchData(url: string): Promise<any> {
  const response = await fetch(url);
  const data = await response.json();
  return data;
}

src/index.ts:

TypeScript
import { fetchData } from './fetchData';

const url = 'https://api.github.com/users/octocat';

fetchData(url)
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Error fetching data:', error);
  });
3
Задача
Модуль 2: Fullstack,  8 уровень,  0 лекция
Недоступна
Создание HTTP сервера
Создание HTTP сервера
3
Задача
Модуль 2: Fullstack,  8 уровень,  0 лекция
Недоступна
Логирование сообщений
Логирование сообщений
3
Задача
Модуль 2: Fullstack,  8 уровень,  0 лекция
Недоступна
Асинхронный запрос данных
Асинхронный запрос данных
3
Задача
Модуль 2: Fullstack,  8 уровень,  0 лекция
Недоступна
Управление пользователями
Управление пользователями
Комментарии
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
У этой страницы еще нет ни одного комментария