У меня есть функция callback<T>
, возвращаемое значение которой Promise<T>
или undefined
. Теперь я хочу создать функцию обтекания, которая будет выполнять функцию и всегда будет возвращать Обещание - в случае, если функция обратного вызова вернула undefined
, Обещание должно разрешиться с undefined
.
Код не является проблема, но поддержание вывода типа в Typescript. Как должна выглядеть сигнатура функции для поддержания набора текста?
(нерабочий) пример:
function wrap<T>(callback: () => Promise<T> | undefined): Promise<T> | Promise<undefined>
// inferred signature should be Promise<undefined>
const a = wrap(() => undefined)
// inferred signature should be Promise<number>
const b = wrap(() => Promise.resolve(5))