返回类型与打字稿快车路线

问题描述 投票:0回答:1

我试图用打字原稿到它的全部潜力,所以我尽量避免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正确的方法是什么?

node.js typescript express
1个回答
2
投票

按@ jfriend的意见,回调的declaration for RequestHandler是:

(req: Request, res: Response, next: NextFunction): any;

因此,在这种情况下,使用any是好的。

然而,它声明为void可以作为快递不希望返回值会更好。这是我在做什么,我在这里考虑分型是“错误”(如果不是这种情况,有一个有效的使用情况,请让我知道)。

© www.soinside.com 2019 - 2024. All rights reserved.