[英]Return type for Express routes with 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
聲明路線返回類型的正確方法是any
?
根據@jfriend的評論, RequestHandler的回調聲明為 :
(req: Request, res: Response, next: NextFunction): any;
因此,在這種情況下可以使用any
。
但是,將其聲明為void
可能更好,因為Express並不期望返回值。 這就是我正在做的事情,我正在考慮此處的鍵入“錯誤”(如果不是這種情況,並且存在有效的用例,請告訴我)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.