title: How can I correctly override Express method with strict args types?
body: <p>I want to set restrictions on a data, that can be passed to express' <code>res.send()</code>.
  For now I have following type declarations:</p>
  
  <pre><code>interface ServerResponseData {
    data?: object | object[];
    errors: string[];
  }
  
  declare module 'express-serve-static-core' {
    interface Request {
      user?: {
        isAdmin: boolean;
        token: string;
      };
    }
  
    interface Response {
      /**
       * Overridden Express.Response method.
       * Sends only strictly typed data.
       * @param {string} body.text Short description of request results.
       * @param {object} [body.data] Data to send.
       */
      send(body: ServerResponseData): Response;
    }
  }
  </code></pre>
  
  <p>It does work for overriding <code>Request</code>, but not for Response. TSlint says that <code>send</code> is already declared. In route handler it uses 'old' typings, without given restrictions.</p>
  
  <p>What should I do to get this to work?
  Thanks.</p>