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

问题描述 投票:2回答:2

我正在使用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。没有错综复杂的解决方法,这可能吗?

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

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

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

public async findAll(_req: Request, res: Response) {...}

0
投票

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

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

问题的代码现在看起来像

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

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

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

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