我使用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包含在我的方法参数中。如果没有复杂的解决方法,这可能吗?
答案 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 });
}
希望这对以后对我有帮助的人有所帮助。