Проблема
Я хочу создать фабрику, которая выполняет различные функции в зависимости от заданных параметров. Это может быть решено с помощью условных типов.
type DispatchConditional<TPayload> = TPayload extends undefined
? () => void
: (payload: TPayload) => void;
Тип DispatchCondition
может быть снабжен интерфейсом.
interface ActionDispatcher<TPayload> {
dispatch: DispatchConditional<TPayload>;
}
Если я строю фабрику на основе приведенных выше определений, она сломается, если используется Union-Type
. Каким-то образом тип объединения, определяемый payloadUnion()
, становится Intersection-Type
.
Вопрос
Какие корректировки я должен выполнить сделать, чтобы получить определение типа для метода dispatch
, который поддерживает union-типы?
Playground