我正在尝试使用TypeScript来发挥其全部潜力,因此,如果可能的话,我会避免使用any
。
我已经看到Express路由的定义如下:
import { Request, Response } from "express";
myRouter.route("/foo").post((req: Request, res: Response): Response => {
return res.send("Hello World");
});
之所以可行,是因为
send()
返回一个明确的Response
。但是,如果我进行重定向:
myRouter.route("/bar").post((req: Request, res: Response): Response => {
return res.redirect("/baz"); // redirect() returns void!
});
那不会编译,因为
redirect()
返回void,而不是Response
。选项:
any
,但如果可能的话,我想避免这种情况as unknown as Response
的代码,但看起来像是hack 不使用
any
声明路由返回类型的正确方法是什么?
最佳答案
根据@jfriend的评论,回调的declaration for RequestHandler为:
(req: Request, res: Response, next: NextFunction): any;
因此,在这种情况下使用
any
是可以的。但是,将其声明为
void
可能会更好,因为Express并不期望返回值。这就是我正在做的事情,并且我认为此处的输入是“错误的”(如果不是这种情况,并且存在有效的用例,请告诉我)。
关于node.js - 使用TypeScript的Express路由的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54603561/