Skip to content

Instantly share code, notes, and snippets.

@JamieMason
Created September 11, 2021 18:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JamieMason/7b3aa7f2e254053b5023a980ef4ec7b1 to your computer and use it in GitHub Desktop.
Save JamieMason/7b3aa7f2e254053b5023a980ef4ec7b1 to your computer and use it in GitHub Desktop.
Attempt to reduce boilerplate related to a Machine's types in XState

Attempt to reduce boilerplate related to a Machine's types in XState

import type {
  ActionObject,
  EventObject,
  Interpreter,
  Sender,
  State,
  StateMachine,
  Typestate,
} from 'xstate'

export interface MachineDefinition<
  Ctx extends {} = {},
  Events extends EventObject = EventObject,
  TypeState extends Typestate<Ctx> = Typestate<Ctx>,
> {
  Ctx: Ctx
  Events: Events
  Machine: StateMachine<Ctx, any, Events, Typestate<Ctx>, ActionObject<Ctx, Events>>
  Actor: [State<Ctx, Events, any, TypeState>, Sender<Events>]
  Service: Interpreter<Ctx, any, Events, TypeState>
  TypeState: TypeState
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment