Типизация с эффектором
Лучшие практики для написания хорошо типизированного кода
#
createEventПо умолчанию этот метод возвращает Event<void>
Тип события может быть указан как дженерик
#
createEffectTypescript может вывести тип результата эффекта из заданного обработчика, но тип аргумента должен быть определен либо в аргументе обработчика, либо как дженерик
#
Типизация ошибок с 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
у результата
#
splitTypescript type predicates можно использовать для разделения исходного типа события на несколько вариантов (отсюда и название)
#
guardTypescript type predicates можно использовать для вывода типа результата с помощью функции filter
#
createApiЧтобы позволить typescript выводить типы создаваемых событий, можно добавить тип ко второму аргументу обработчиков
#
isМетоды группы is
могут помочь вывести тип юнита, то есть они действуют как TypeScript type guards. Это применяется в написании типизированных утилит