ofType
принимает в качестве обобщенного c params тип действия, например, ofType<Action>(actionType)
, тогда аргумент карты слияния будет набираться как Action
без ввода.
В вашем случае action
аргумент может быть ActionA
или ActionB
, так что вы должны написать ofType<ActionA | ActionB>(actionTypeA, actionTypeB)
, тогда action
из mergeMap будет напечатано как Union of ActionA
и ActionB
. Но в правильных ветвях if, таких как (action.type == myActions.actionA)
, действие будет напечатано только ActionA
, потому что TS complier понимает некоторые операторы ifs.
Кстати, совет @timdeschryver разделить его на 2 эффекта очень хорош.
============== отредактировано =================
Если вы определяете действие с помощью export const actionA = createAction('actionA', props<{ a: string }>())
Вы можете объявить тип ActionA
с помощью type ActionA = ReturnType<typeof actionA>;
. ReturnType
является обобщенным c добавлено в TypeScript.