import { Request } from 'express';

interface HTTPRequest extends Request {
  session: any;
  csrfToken: () => string;
}

export class Context<User = any> {
  state: { [key: string]: any } = {};
  user: User;
  request: HTTPRequest;

  constructor(request) {
    this.request = request;
  }
}

export class Context<User = any> {
  state: { [key: string]: any } = {};
  user: User;

  constructor(public request) {}
}

--- 
+++ 
@@ -1,6 +1,16 @@
+import { Request } from 'express';
+
+interface HTTPRequest extends Request {
+  session: any;
+  csrfToken: () => string;
+}
+
 export class Context<User = any> {
   state: { [key: string]: any } = {};
   user: User;
+  request: HTTPRequest;
 
-  constructor(public request) {}
+  constructor(request) {
+    this.request = request;
+  }
 }
Add `Request` type to Context.
