Explicitly Specifying types for Express' "application, request, response..." Explicitly Specifying types for Express' "application, request, response..." express express

Explicitly Specifying types for Express' "application, request, response..."


Classic case of "work on something for a while with no success, but when you finally post a question asking for help, you figure it out immediately".

The solution:When you want to use one of the types, you have to import the module as the typedef is in a named module within the typedef.

In the above code (that resided in my app.ts), I was getting the type annotations on app. Because my import statement at the top of the file was import express = require('express');, I could annotate the req & res params like this:

app.get('/', function(req:express.Request, res:express.Response){});

In other files, where I was trying to get type annotations on the app, I was missing the import statement at the top of the file. Once added, I could add the annotations for that as well like:

public init(app: express.Application){}


In case anyone stumbles on this question in 2017 and using a more modern TS. You should be able to just npm install @types/express and then it should just work.


I think some of these answers may be dated. The following worked for me:

import { Request, Response } from 'express';