TypeScript with Node.js & Express

Build robust, scalable backend REST APIs by combining Node.js, Express, and TypeScript type safety.

1. Installing Type Definitions (`@types`)

npm install express
npm install --save-dev typescript @types/node @types/express ts-node nodemon

2. Typing Express Request & Response Handlers

import express, { Request, Response, NextFunction } from 'express';

const app = express();
app.use(express.json());

interface UserDTO {
  name: string;
  email: string;
}

// Typing Request Body & Params
app.post('/api/users', (req: Request<{}, {}, UserDTO>, res: Response) => {
  const { name, email } = req.body;
  
  res.status(201).json({
    id: 101,
    name,
    email
  });
});

app.listen(3000, () => {
  console.log("Server running on port 3000");
});

3. Typing Custom Middleware

import { Request, Response, NextFunction } from 'express';

export function authMiddleware(req: Request, res: Response, next: NextFunction) {
  const token = req.headers.authorization;
  
  if (!token) {
    return res.status(401).json({ error: "Unauthorized access" });
  }

  next();
}

Next Up

Master TSConfig options: target, module, strict mode, paths, and compiler flags.

Next Lesson: TSConfig & Compiler Options →