Как ввести параметры универсальной функции для преобразования функции стиля обратного вызова в более гибкий стиль Promise? - PullRequest
1 голос
/ 02 декабря 2019

Я пытаюсь создать универсальный шаблон, который обрабатывает обратный вызов в вызов функции синхронного стиля.

Например. f(err: Error, response: ResponseT):void должно стать f(): ResponseT

Как я могу это сделать?

У меня есть функция с именем wrap (), которая уже делает это ... как мне объявить ее правильно, чтобы она сохраняла типы?

Попытка что-то вроде

function wrapAsync<A extends any[], E, R>(f: (...args: A, err: E, response: R) => void): R

Но это не сработает однозначно, поскольку аргументы REST должны идти после любых других.

...