gpt4 book ai didi

node.js - 使用TypeScript的Express路由的返回类型

转载 作者:行者123 更新时间:2023-12-03 12:10:23 29 4
gpt4 key购买 nike

我正在尝试使用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声明路由返回类型的正确方法是什么?

    最佳答案

    根据@jfriend的评论,回调的declaration for RequestHandler为:

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

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

    但是,将其声明为 void可能会更好,因为Express并不期望返回值。这就是我正在做的事情,并且我认为此处的输入是“错误的”(如果不是这种情况,并且存在有效的用例,请告诉我)。

    关于node.js - 使用TypeScript的Express路由的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54603561/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com