transitionWithSideEffect<State, Event, InState extends State, RealEvent extends Event> function

StateTransitionEntry<State, Event> transitionWithSideEffect<State, Event, InState extends State, RealEvent extends Event>(
  1. StateTransition<InState, RealEvent, State> transition,
  2. SideEffect<InState, RealEvent> sideEffect
)

Makes StateTransitionEntry with both transition and sideEffect.

Implementation

StateTransitionEntry<State, Event> transitionWithSideEffect<State, Event,
    InState extends State, RealEvent extends Event>(
  StateTransition<InState, RealEvent, State> transition,
  SideEffect<InState, RealEvent> sideEffect,
) {
  return StateTransitionEntry<State, Event>(
    transition: (state, event) =>
        transition(state as InState, event as RealEvent),
    sideEffect: (state, event) =>
        sideEffect(state as InState, event as RealEvent),
  );
}