首页 > 解决方案 > 如何使用严格的 args 类型正确覆盖 Express 方法?

问题描述

我想对可以传递给 express' 的数据设置限制res.send()。现在我有以下类型声明:

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;
  }
}

它确实适用于覆盖Request,但不适用于响应。TSlint 说send已经声明了。在路由处理程序中,它使用“旧”类型,没有给定限制。

我应该怎么做才能让它工作?谢谢。

标签: typescriptexpress

解决方案


推荐阅读