lon*_*nix 9 node.js express typescript
我正在尝试充分利用 TypeScript,所以我any
尽可能避免。
我见过这样定义的 Express 路由:
import { Request, Response } from "express";
myRouter.route("/foo").post((req: Request, res: Response): Response => {
return res.send("Hello World");
});
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为send()
返回一个 express Response
。
但是如果我做一个重定向:
myRouter.route("/bar").post((req: Request, res: Response): Response => {
return res.redirect("/baz"); // redirect() returns void!
});
Run Code Online (Sandbox Code Playgroud)
这不会编译,因为redirect()
返回 void,而不是Response
.
选项:
any
,但我想尽可能避免这种情况as unknown as Response
但这似乎是一个 hack在不使用的情况下声明路由返回类型的正确方法是什么any
?
lon*_*nix 20
根据@jfriend 的评论,RequestHandler的回调声明是:
(req: Request, res: Response, next: NextFunction): any;
Run Code Online (Sandbox Code Playgroud)
所以any
在这种情况下使用是可以的。
但是,将其声明为void
可能更好,因为 Express 不期望返回值。这就是我正在做的事情,我认为这里的打字是“错误的”(如果情况不是这样并且有一个有效的用例,请告诉我)。
归档时间: |
|
查看次数: |
7097 次 |
最近记录: |