Minor Changes
-
d2e328f8
#1439 Thanks @davidkpiano! - An opt-increateModel()
helper has been introduced to make it easier to work with typedcontext
and events.createModel(initialContext)
creates amodel
objectmodel.initialContext
returns theinitialContext
model.assign(assigner, event?)
creates anassign
action that is properly scoped to theevent
in TypeScript
See #1439 for more details.
import { createMachine } from 'xstate'; import { createModel } from 'xstate/lib/model'; // opt-in, not part of main build interface UserContext { name: string; age: number; } type UserEvents = | { type: 'updateName'; value: string } | { type: 'updateAge'; value: number } const userModel = createModel<UserContext, UserEvents>({ name: 'David', age: 30 }); const assignName = userModel.assign({ name: (_, e) => e.value // correctly typed to `string` }, 'updateName'); // restrict to 'updateName' event const machine = createMachine<UserContext, UserEvents>({ context: userModel.context, initial: 'active', states: { active: { on: { updateName: { actions: assignName } } } } });