Transactions 编写一个TypeORM@Transaction方法,当使用此方法时,IDE报告错误为;参数数无效,应为2“;

Transactions 编写一个TypeORM@Transaction方法,当使用此方法时,IDE报告错误为;参数数无效,应为2“;,transactions,visual-studio-code,ide,webstorm,typeorm,Transactions,Visual Studio Code,Ide,Webstorm,Typeorm,我以typeform office document()的形式编写了一个事务处理方法 代码如下: @Transaction('some-db-connection') public async savePhoto(record: DeepPartial<Photo>, @TransactionManager() manager: EntityManager) { return await manager.save<Deep

我以typeform office document()的形式编写了一个事务处理方法

代码如下:

@Transaction('some-db-connection')
public async savePhoto(record: DeepPartial<Photo>, 
                       @TransactionManager() manager: EntityManager) {
    return await manager.save<DeepPartial<Photo>>(record)
}
VS代码和WebStorm都将错误报告为“参数数无效,预期为2”。有人知道如何让IDE不报告此错误吗?谢谢

附言

虽然IDE报告错误,但代码可以无错误地执行


我所有的代码都是.ts文件中的TypeScript代码

有两种解决方案适合我:

// @ts-ignore
await savePhoto(photo);
  • 如前所述,将第二个参数设为可选应该可以

    @Transaction()
    public async savePhoto(
        photo: Photo, 
        @TransactionManager() manager?: EntityManager
    ): Promise<Photo> {
        return manager.save(photo);
    }
    

您的
savePhoto()
方法声明为具有2个非可选参数,但使用单个参数调用。因此,错误是正确的。您可以在代码中将
manager
设置为可选(
manager?
),或者使用JSDoc注释shi lena,如果我使用manager?,我必须将“wait someRepo.savePhoto(record)”包装为If(manager),如下所示:If(manager){wait someRepo.savePhoto(record)},否则IDE(或TypeScript编译器)将给出错误:manager可能未定义。你能给我一个JSDoc注释的例子吗,谢谢!我将文档注释添加为,但无法解决IDE错误警告/***@param{EntityManager=}[manager=someManager]*/我觉得您的第二个选项不是可行的选项,这需要在每次使用函数(或任何数据库服务)时添加@ts ignore。您建议的第一个选项是在调用“save”方法之前缺少“?”。由于您声明manager可能未定义,因此在使用它时,TS将向您提示一个错误,说明它可能未定义,因此调用“.save”无法无风险完成。
// @ts-ignore
await savePhoto(photo);