【发布时间】:2017-09-11 18:40:35
【问题描述】:
我在 Node.js 中使用 Typescript。当您使用 Express 中间件时,您通常会转换 Request 对象。然而,使用 Typescript,我们无法跟踪 Request 对象是如何转换的。如果你知道之前通过的中间件,有没有办法从中找出请求的类型?如果无法表达,我想在可能的情况下找到另一个框架。在 Nest (https://github.com/kamilmysliwiec/nest) 中可以吗?
示例代码
import { Request, Response, NextFunction } from 'express';
function userMiddleware(req: Request & User, res: Response, next: NextFunction) {
req.user = {
id: 'user_id',
};
next();
}
interface User {
user: {
id: string;
}
}
interface Middleware {
<T>(req: Request & T, res: Response, next: NextFunction): void;
}
class Controller {
middleware = [userMiddleware];
get = new GetMethod(this.middleware);
post = (req: Request /* I don't know exact req type */, res: Response, next: NextFunction) => {
console.log(req.user) // Error!
}
}
class GetMethod {
constructor(middleware: Middleware[]) {
// How to deduce type of req from Middleware array?
}
}
const controller = new Controller();
express.use('/', controller.middleware, controller.post);
我想从 Controller 类的中间件列表中提取类型信息。
【问题讨论】:
-
您能提供演示您的问题的示例代码吗?
-
@elithrar 我添加了一些示例代码。谢谢。
-
我相信nestjs在后台使用express
标签: node.js express typescript