包装的联合失败,并显示“参数类型...无法分配给类型...”-为什么?

时间:2019-03-27 03:04:56

标签: typescript types union

我试图将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)
    }

凭直觉,我希望包装一个函数并镜像其参数签名显然可以编译。

我的“修复”为什么起作用?为何原始文件会失败?您的答案将帮助我了解工会类型!

0 个答案:

没有答案