Я пытаюсь обернуть очередь Bull.js внутри своего класса (для инкапсуляции и дальнейшей обработки и т. Д.). При обёртывании экземпляра Bull Queue tsc завершается неудачно с аргументом типа 'string | ((задание: задание выполнено: функция) => недействительно) | ((job: Job) => Promise) 'нельзя назначить параметру типа' string '
Компиляция работает, если я удаляю «| string» из callback:
подписи метода упаковки.
Фактический код: (это не удалось)
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)
}
Интуицией я ожидал, что завершение функции и отражение ее сигнатур в пареметрах, очевидно, скомпилируется.
Почему мой "починить" работал? И почему оригинал потерпел неудачу? Ваш ответ поможет мне понять типы объединений!