1.0 1.0 - 4 months ago 62
TypeScript Question

how to declare typescript interface extension to node request session object?

In the following,

is added to the session object by my passport methods. How do I declare its interface in typescript?

import express = require('express');
import expressSession = require('express-session');

// how to declare presence of returnTo, which is not in underlying type?

export function createSession(req: express.Request, res: express.Response, next: Function) {

passport.authenticate('local', (err: any, user: UserInstance, info: any) => {
//. . .
req.logIn(user, (err) => {
//. . .
res.redirect(req.session.returnTo || '/');
})(req, res, next);


There's a type declaration for express-session on DefinitelyTyped:


Following the pattern in that file, you can create a new d.ts (call it whatever you want) containing:

declare module Express {
  export interface Session {
    returnTo: string;

TypeScript will "merge" this extra property into the existing definitions.