0Pricing
TypeScript Academy · Урок

Типизация запросов и ответов Express

Расширяйте типы Express для типизированных параметров маршрутов и тел запросов

«Типизация запросов и ответов Express» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Добро пожаловать

Express предоставляет типы TypeScript через @types/express. Узнайте, как сделать маршруты типобезопасными.

Установка типов

Установите Express вместе с его определениями типов.
npm install express
npm install --save-dev @types/express

Базовые типы маршрутов

Импортируйте Request и Response из express.
import { Request, Response } from 'express';
app.get('/users', (req: Request, res: Response) => {
  res.json({ users: [] });
});

Типизация параметров маршрута

Типизируйте параметры пути с помощью обобщённых типов Request.
interface Params { id: string; }
app.get('/users/:id', (req: Request<Params>, res: Response) => {
  const { id } = req.params;
});

Типизированное тело запроса

Типизируйте тело запроса с помощью обобщённого типа RequestBody.
interface CreateUser { name: string; email: string; }
app.post('/users', (req: Request<{}, {}, CreateUser>, res: Response) => {
  const { name, email } = req.body;
});

Типизированные параметры запроса

Типизируйте параметры строки запроса.
interface Query { page?: string; limit?: string; }
app.get('/users', (req: Request<{}, {}, {}, Query>, res: Response) => {
  const page = parseInt(req.query.page ?? '1');
});

Расширение Request

Добавляйте пользовательские свойства в Request с помощью дополнения модуля.
declare global {
  namespace Express {
    interface Request { user?: User; }
  }
}

Типизированный ответ

Объединяйте обобщённые типы Response в цепочку, чтобы типизировать тело JSON.
app.get('/me', (req: Request, res: Response<User>) => {
  res.json(req.user!); // response body must be User
});

Типы обработчиков ошибок

Обработчики ошибок Express имеют специальную сигнатуру с четырьмя параметрами.
import { ErrorRequestHandler } from 'express';
const errHandler: ErrorRequestHandler = (err, req, res, next) => {
  res.status(500).json({ error: err.message });
};

Использование Router с типами

Типизируйте Router так же, как основное приложение.
import { Router } from 'express';
const router = Router();
router.get('/:id', (req: Request<{ id: string }>, res) => {});

Промежуточное ПО для валидации

Используйте типизированное промежуточное ПО, чтобы проверять запросы и уточнять их типы.
function parseBody<T>(schema: ZodSchema<T>) {
  return (req: Request, res: Response, next: NextFunction) => {
    req.body = schema.parse(req.body);
    next();
  };
}

Быстрая проверка

Каково основное преимущество использования @types/express в проекте TypeScript?

Итоги

Типизация Request и Response в Express: типизируйте обобщённые параметры Request/Response для параметров маршрута, тела и строки запроса. Расширяйте Request с помощью дополнения модуля для добавления пользовательских свойств. Типизируйте промежуточное ПО и обработчики ошибок с помощью соответствующих сигнатур.

Часто задаваемые вопросы

Урок «Типизация запросов и ответов Express» бесплатный?

Да — полный текст урока «Типизация запросов и ответов Express» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Типизация запросов и ответов Express»?

Расширяйте типы Express для типизированных параметров маршрутов и тел запросов Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Типизация запросов и ответов Express»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка TypeScript с Node.js
  2. Типизация запросов и ответов Express
  3. Типизированное промежуточное ПО и обработчики ошибок
  4. Переменные окружения и типизация конфигурации
← Назад к TypeScript Academy