0Pricing
TypeScript Academy · レッスン

ExpressのRequestとResponseに型を付ける

Expressの型を拡張して、ルートパラメーターとリクエストボディに型を付けます。

「ExpressのRequestとResponseに型を付ける」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。

ようこそ

Expressには@types/expressによるTypeScriptの型定義があります。ルートを型安全にする方法を学びます。

型定義のインストール

Expressとその型定義をインストールします。
npm install express
npm install --save-dev @types/express

基本的なルートの型

expressからRequestとResponseをインポートします。
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に型を付ける

Responseのジェネリックを使用してJSONボディに型を付けます。
app.get('/me', (req: Request, res: Response<User>) => {
  res.json(req.user!); // response body must be User
});

エラーハンドラーの型

Expressのエラーハンドラーには、4つのパラメーターからなる固有のシグネチャがあります。
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();
  };
}

クイックチェック

TypeScriptプロジェクトで@types/expressを使用する主なメリットは何ですか?

まとめ

ExpressのRequestとResponseに型を付ける方法として、パラメーター、body、query用のRequest/Responseジェネリックに型を付けます。カスタムプロパティには、モジュール拡張によってRequestを拡張します。ミドルウェアとエラーハンドラーには、それぞれ固有のシグネチャで型を付けます。

よくある質問

「ExpressのRequestとResponseに型を付ける」レッスンは無料ですか?

はい。「ExpressのRequestとResponseに型を付ける」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。

「ExpressのRequestとResponseに型を付ける」で何を学びますか?

Expressの型を拡張して、ルートパラメーターとリクエストボディに型を付けます。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

TypeScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「ExpressのRequestとResponseに型を付ける」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このTypeScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Node.jsでTypeScriptをセットアップする
  2. ExpressのRequestとResponseに型を付ける
  3. 型付きMiddlewareとError Handler
  4. 環境変数とConfigの型付け
← TypeScript Academyに戻る