我试图用打字原稿到它的全部潜力,所以我尽量避免any
如果可能的话。
我见过这样定义快捷路线:
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
但是,似乎是一个黑客什么是申报路线的返回类型,而不使用any
正确的方法是什么?
按@ jfriend的意见,回调的declaration for RequestHandler是:
(req: Request, res: Response, next: NextFunction): any;
因此,在这种情况下,使用any
是好的。
然而,它声明为void
可以作为快递不希望返回值会更好。这是我在做什么,我在这里考虑分型是“错误”(如果不是这种情况,有一个有效的使用情况,请让我知道)。