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

时间:2019-01-05 17:54:21

标签: javascript node.js typescript express routing

我使用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包含在我的方法参数中。如果没有复杂的解决方法,这可能吗?

2 个答案:

答案 0 :(得分:1)

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

未使用的参数通常可以加下划线以避免检查。 TypeScript就是这种情况:

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

答案 1 :(得分:0)

我刚刚找到了一个经过反复试验的解决方案。如果您能找到更优雅的解决方案,请发表。

为避免打字稿编译器错误消息,只需将函数参数设置为空对象({})。

问题代码现在看起来像

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

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

希望这对以后对我有帮助的人有所帮助。