TypeScript
XState v5 и связанные с ним библиотеки написаны на TypeScript и используют сложные типы для обеспечения максимальной типобезопасности и вывода типов.
TypeScript
XState v5 требует TypeScript версии 5.0 или выше.
Для лучших результатов используйте последнюю версию TypeScript.
Следуйте этим рекомендациям, чтобы убедиться, что ваш TypeScript-проект готов к использованию XState v5:
Используйте последнюю версию TypeScript¶
Используйте последнюю версию TypeScript; требуется версия 5.0 или выше.
1 | |
Настройте ваш файл tsconfig.json¶
- Установите
strictNullChecksвtrueв вашем файлеtsconfig.json. Это обеспечит корректную работу наших типов и поможет отлавливать ошибки в вашем коде. (Настоятельно рекомендуется). - Установите
skipLibCheckвtrueв вашем файлеtsconfig.json. (Рекомендуется).
1 2 3 4 5 6 7 8 9 10 11 | |
Указание типов¶
Рекомендуемый способ строгой типизации вашей машины — использовать функцию setup(...):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Вы также можете указать типы TypeScript внутри конфигурации машины, используя свойство .types:
1 2 3 4 5 6 7 8 9 10 11 | |
Эти типы будут выводиться по всей конфигурации машины, а также в созданной машине и акторе, так что методы, такие как machine.transition(...) и actor.send(...), будут типобезопасными.
Динамические параметры¶
Рекомендуется использовать динамические параметры в действиях и защитах, так как они позволяют создавать переиспользуемые функции, которые не привязаны к машине и строго типизированы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
Утверждение событий¶
Действия и защиты¶
Информация
Настоятельно рекомендуется использовать динамические параметры вместо прямого доступа к объекту события, когда это возможно, для улучшения типобезопасности и переиспользуемости.
Если использование динамических параметров невозможно и вы должны использовать событие в реализации действия или защиты, вы можете утвердить тип события с помощью вспомогательной функции assertEvent(...):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | |
Входные данные вызванного актора¶
Другой случай, когда полезно использовать assertEvent — при указании input для вызванного актора. Полученное event может быть любым из событий, полученных этим актором. Чтобы TypeScript распознал тип события и его свойства, вы можете использовать assertEvent для сужения типа события.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
Вспомогательные типы¶
XState предоставляет некоторые вспомогательные типы для упрощения работы с типами в TypeScript.
ActorRefFrom<T>¶
Возвращает ActorRef из предоставленного параметра логики актора T, что полезно для создания строго типизированных акторов. Параметр T может быть любой ActorLogic, такой как возвращаемое значение createMachine(…), или любой другой логикой актора, такой как fromPromise(…) или fromObservable(…).
1 2 3 4 | |
SnapshotFrom<T>¶
Возвращает Snapshot из предоставленного параметра T, что полезно для создания строго типизированных снимков. Параметр T может быть любой ActorLogic или ActorRef.
1 2 3 4 | |
EventFromLogic<T>¶
Возвращает объединение всех типов событий, определённых в предоставленном параметре логики актора T. Полезно для типобезопасной обработки событий.
1 2 3 4 5 6 | |