Свернутое объединение завершается неудачно с «Аргументом типа ... нельзя назначить типу ...» - Почему? - PullRequest
2 голосов
/ 27 марта 2019

Я пытаюсь обернуть очередь 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)
    }

Интуицией я ожидал, что завершение функции и отражение ее сигнатур в пареметрах, очевидно, скомпилируется.

Почему мой "починить" работал? И почему оригинал потерпел неудачу? Ваш ответ поможет мне понять типы объединений!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...