Типизация с эффектором
Лучшие практики для написания хорошо типизированного кода
createEvent#
По умолчанию этот метод возвращает Event<void>
Тип события может быть указан как дженерик
createEffect#
Typescript может вывести тип результата эффекта из заданного обработчика, но тип аргумента должен быть определен либо в аргументе обработчика, либо как дженерик
Типизация ошибок с createEffect#
Некоторый код может выдать исключения только некоторых типов, например библиотека axios в качестве ошибок использует только AxiosError. В эффектах для описания типов ошибок используется дженерик Fail.
Для его указания, в случае, когда тип аргумента и тип результата задаётся явно (первым и вторым дженериком метода createEffect соответственно), используется третий дженерик метода:
В случае, когда обработчик эффекта определен до самого эффекта, typescript может определить тип Params и Done используя typeof handler в первом generic, не указывая сами типы явно. В таком случае описание типа ошибок можно передать в опциональный второй дженерик метода:
note
Fail в качестве второго дженерика добавлен в effector 21.6.0
event.prepend#
Чтобы добавить типы к событиям, созданным с помощью event.prepend, необходимо добавить тип либо в аргумент функции prepend, либо как дженерик
attach#
Чтобы позволить typescript выводить типы создаваемого эффекта, можно добавить тип к первому аргументу mapParams, который станет дженериком Params у результата
split#
Typescript type predicates можно использовать для разделения исходного типа события на несколько вариантов (отсюда и название)
guard#
Typescript type predicates можно использовать для вывода типа результата с помощью функции filter
createApi#
Чтобы позволить typescript выводить типы создаваемых событий, можно добавить тип ко второму аргументу обработчиков
is#
Методы группы is могут помочь вывести тип юнита, то есть они действуют как TypeScript type guards. Это применяется в написании типизированных утилит