Справочник API
Типы времени выполнения
Все публичные типы экспортируются из корня пакета:
ts
import type {
// Основной конфиг
MachineConfig,
StateConfig,
TransitionConfig,
SubMachineConfig,
// Функции
Guard,
Action,
// События
EventObject,
// Runtime
MachineInstance,
UseMachineOptions,
TransitionRecord,
MachineSnapshot,
TransitionResult,
// Wizard
WizardStep,
WizardOptions,
WizardInstance,
// Store
MachineStoreAPI,
// Утилиты
Ctx,
} from '@macrulez/vue-state-machine'TransitionResult также несёт поле contextPatch: Partial<TContext> — фактическую дельту, которую применил переход, вызванный действиями (в отличие от nextContext — полного результирующего контекста). Используется внутри для слияния изменений контекста параллельных регионов так, чтобы один регион не затирал нетронутые поля другого — см. Параллельные состояния.
Вывод дженериков
TypeScript выводит TState, TEvent и TContext из конфига, переданного в defineMachine. Аннотировать их вручную требуется редко:
ts
const machine = defineMachine({
id: 'traffic',
initial: 'red', // TS выводит TState = 'red' | 'green' | 'yellow'
states: {
red: { on: { NEXT: { target: 'green' } } }, // TEvent = 'NEXT'
green: { on: { NEXT: { target: 'yellow' } } },
yellow: { on: { NEXT: { target: 'red' } } },
},
})
const { state } = useMachine(machine)
// state: Ref<'red' | 'green' | 'yellow'>
// send принимает только 'NEXT' — остальные строки — ошибка компиляцииДля сложных случаев можно аннотировать явно:
ts
const machine = defineMachine<
'idle' | 'loading' | 'error' | 'success',
'SUBMIT' | 'SUCCESS' | 'FAILURE' | 'RETRY',
{ attempts: number; error: string | null }
>({ ... })