使用打字稿时如何处理快速控制器方法参数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用打字稿时如何处理快速控制器方法参数?相关的知识,希望对你有一定的参考价值。

我正在使用express进行路由,我不需要在我的控制器方法中使用Request对象。但是,我找不到一种强制排除Request参数的简单方法。

第一个示例传递打字稿验证。

  public async findAll(req: Request, res: Response) {
    // search the db for all transactions
    const transactions = await Transaction.find();

    res.status(200).send({ transactions, incoming: req.body });
  }

这个例子编译成有效的javascript,但没有通过打字稿验证,因为我得到错误'req' is declared but its value is never read.

  public async findAll(req: Request, res: Response) {
    // search the db for all transactions
    const transactions = await Transaction.find();

    res.status(200).send({ transactions });
  }

理想情况下,我根本不想在我的方法参数中包含Request。没有错综复杂的解决方法,这可能吗?

答案

'req' is declared but its value is never read错误可能是由TypeScript noUnusedParameters选项引起的。如果它干扰了开发过程,可以禁用它以支持类似的TSLint规则,该规则可以进行微调以引发警告而不是错误。

可以常规地强调未使用的参数以避免检查。 TypeScript就是这种情况:

public async findAll(_req: Request, res: Response) {...}
另一答案

我刚刚找到了一个有更多试验和错误的解决方案。如果您能找到更优雅的解决方案,请发布。

要避免使用typescript编译器错误消息,只需将函数参数设为空对象({})即可。

问题的代码现在看起来像

public async findAll({}, res: Response) {
  // search the db for all transactions
  const transactions = await Transaction.find();

  res.status(200).send({ transactions });
}  

希望这有助于未来的人,因为我找不到现有的帖子。

以上是关于使用打字稿时如何处理快速控制器方法参数?的主要内容,如果未能解决你的问题,请参考以下文章

使用选项卡活动和片段时如何处理后按

自然模板(例如Thymeleaf)时如何处理代码重复?

想要启用可空引用类型时如何处理可选参数?

快速导航页面时如何处理HTTP api请求 |颤振 |镖

嵌入 UINavigationController 时如何处理 UIView 区域减少的问题

使用 Kafka Streams DSL 时如何处理错误和不提交