Я пытаюсь создать универсальный шаблон, который обрабатывает обратный вызов в вызов функции синхронного стиля.
Например. 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 должны идти после любых других.