我试图将Bull.js队列包装在我自己的类中(用于封装和进一步处理等)。包装Bull Queue实例时,tsc失败,类型为'string | (((job:Job,done:Function)=> void)| ((job:Job)=> Promise)'不能分配给'string'类型的参数
如果我从包装方法的callback:
签名中删除“ | string”,则编译有效。
实际代码:(此操作失败)
async process(name: string, callback: ((job: Job<any>, done: Function) => void) | ((job: Job<any>) => Promise<any>) | string, concurrency = 1): Promise<void> {
await this.queue.process(name, concurrency, callback)
}
这有效:
async process(name: string, callback: ((job: Job<any>, done: Function) => void) | ((job: Job<any>) => Promise<any>), concurrency = 1): Promise<void> {
await this.queue.process(name, concurrency, callback)
}
凭直觉,我希望包装一个函数并镜像其参数签名显然可以编译。
我的“修复”为什么起作用?为何原始文件会失败?您的答案将帮助我了解工会类型!