簡體   English   中英

使用TypeScript的Express路由的返回類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM