问题
我想创建一个工厂,根据给定的参数提供不同的函数。可以使用条件类型来解决这个问题。
type DispatchConditional<TPayload> = TPayload extends undefined
? () => void
: (payload: TPayload) => void;
DispatchCondition
类型可以通过一个接口进行仪表化。
interface ActionDispatcher<TPayload> {
dispatch: DispatchConditional<TPayload>;
}
如果我按照上述定义建立工厂,如果使用
联合类型
,它将会出现问题。不知何故,由payloadUnion()
定义的联合类型变成了一个交叉类型
。
问题
我需要做哪些调整来为支持联合类型的dispatch
方法生成类型定义?