1.1 Знакомство с Node.js
Node.js — это среда выполнения JavaScript, которая позволяет использовать JavaScript вне браузера, на сервере. TypeScript — это язык-надмножество JavaScript, которое компилируется в чистый JavaScript. Использование TypeScript с Node.js позволяет разработчикам писать более надежный и поддерживаемый код благодаря статической типизации и остальным возможностям языка.
Почему стоит использовать TypeScript с Node.js?
- Статическая типизация: позволяет обнаруживать ошибки на этапе компиляции.
- Современные возможности JavaScript: поддержка последних стандартов ECMAScript.
- Улучшенное автодополнение и рефакторинг: инструменты разработки, такие как Visual Studio Code, предоставляют более точное автодополнение и мощные возможности рефакторинга.
- Поддержка крупных проектов: четкая типизация и модули помогают в организации и поддержке больших кодовых баз.
1.2 Настройка проекта Node.js с TypeScript
Установка Node.js и npm
Для начала убедитесь, что у вас установлены Node.js и npm. Вы можете скачать их с официального сайта Node.js.
Создание нового проекта
Создайте новую папку для вашего проекта и инициализируйте npm:
mkdir my-node-ts-app
cd my-node-ts-app
npm init -y
Установка TypeScript и необходимых зависимостей
Установите TypeScript и необходимые типы для Node.js:
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:
{
"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 для вашего исходного кода:
mkdir src
1.4 Создание базового примера
Создайте файл src/index.ts с простым примером.
Пример src/index.ts:
// Импортируем модуль 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:
{
"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.
npm start
Вы увидите сообщение о том, что сервер запущен, и сможете открыть браузер и перейти по адресу http://127.0.0.1:3000, чтобы увидеть ответ сервера.
1.5 Базовые примеры работы с TypeScript в Node.js
Работа с модулями
TypeScript поддерживает модульную систему CommonJS, используемую в Node.js. Вы можете создавать модули и импортировать их в другие файлы.
Примеры создания и использования модуля
src/logger.ts:
export function log(message: string): void {
console.log(`[LOG]: ${message}`);
}
src/index.ts:
import { log } from './logger';
log('This is a log message from the logger module');
Использование интерфейсов и классов
TypeScript позволяет определять интерфейсы и классы для создания более структурированного и типизированного кода.
Примеры использования интерфейсов и классов
src/user.ts:
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:
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:
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:
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);
});
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ