javascript - 打字稿:在严格模式下分配之前使用变量
问题描述
我正在尝试使用数据库事务来创建Page
记录,但是我得到了Variable 'createdPage' is used before being assigned
即使this.pagesService.create()
只返回Page
并且如果出现问题它会抛出错误,因此如果没有抛出异常,程序可以确定 createdPage 已设置。那么为什么我会收到这个错误?
@Post('')
async create(
@Body() body: PageCreateDto,
): Promise<Page> {
let createdPage: Page;
try {
await this.database.transaction(async trx => {
createdPage = await this.pagesService.create(body, trx);
});
} catch (error) {
throw new InternalServerErrorException('unable to create page');
}
return createdPage;
}
解决方案
问题是您传递给事务调用的函数不会同步运行,因此您无法确定在返回时实际分配了 createdPage。你可以通过创建一个 Promise 来解决这个问题。
@Post('')
async create(@Body() body: PageCreateDto): Promise<Page> {
return new Promise<Page>((resolve, reject) => {
try {
await this.database.transaction(trx => this.pagesService
.create(body, trx)
.then(resolve));
} catch (error) {
reject(new InternalServerErrorException('unable to create page'));
}
});
}
推荐阅读
- python - 重置变量函数错误
- c# - 我们如何防止下划线被用作控制键指示符?
- python - 用 Python Turtle 创建的 Pong
- c# - 将锯齿状数组写入二进制文件会产生与写入具有相同值的多维数组不同的结果吗?
- javascript - 未读取本地主机 JSON 文件
- python - 访问通过套接字从客户端发送到服务器的类对象数据
- woocommerce - 在邮政编码限制下始终允许在 WooCommerce 中本地取货
- node.js - dialogflow webhook 不考虑使用fulfillmentText、fulfillmentMessages 的有效负载
- python-3.x - 如何将生成器与 JSON 树合并
- wix - 使用相对路径在 WiX 安装程序中创建符号链接