UNPKG

2.03 kBTypeScriptView Raw
1import { Spawner } from "../spawn.js";
2import type { ActionArgs, AnyEventObject, Assigner, EventObject, LowInfer, MachineContext, ParameterizedObject, PropertyAssigner, ProvidedActor, ActionFunction } from "../types.js";
3export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor> extends ActionArgs<TContext, TExpressionEvent, TEvent> {
4 spawn: Spawner<TActor>;
5}
6export interface AssignAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor> {
7 (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams): void;
8 _out_TActor?: TActor;
9}
10/**
11 * Updates the current context of the machine.
12 *
13 * @param assignment An object that represents the partial context to update, or a
14 * function that returns an object that represents the partial context to update.
15 *
16 * @example
17 ```ts
18 import { createMachine, assign } from 'xstate';
19
20 const countMachine = createMachine({
21 context: {
22 count: 0,
23 message: ''
24 },
25 on: {
26 inc: {
27 actions: assign({
28 count: ({ context }) => context.count + 1
29 })
30 },
31 updateMessage: {
32 actions: assign(({ context, event }) => {
33 return {
34 message: event.message.trim()
35 }
36 })
37 }
38 }
39 });
40 ```
41 */
42export declare function assign<TContext extends MachineContext, TExpressionEvent extends AnyEventObject, // TODO: consider using a stricter `EventObject` here
43TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor>(assignment: Assigner<LowInfer<TContext>, TExpressionEvent, TParams, TEvent, TActor> | PropertyAssigner<LowInfer<TContext>, TExpressionEvent, TParams, TEvent, TActor>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, TActor, never, never, never, never>;