Как набрать useDispatch, чтобы вы не могли передать ему действие * creator *? - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь предотвратить компиляцию такого рода кода, так как я видел эту ошибку несколько раз, и трудно заметить, если вы ее не ищете:

const Component = ...
    const dispatch = useDispatch();
    ...
    dispatch(actionCreator); // should be dispatch(actionCreator());

I Я также использую Redux Toolkit и определяю моих создателей действий с помощью createSlice API . Я заметил, что сами создатели действий обладают свойством type, поэтому они соответствуют типу Action, с которым сопоставляется useDispatch, что делает этот код компилируемым даже при соблюдении инструкции о том, как правильно набрать useDispatch . Я думал о возможном использовании условных типов для исключения функций, например

type NotFunction<T> = T extends Function ? never : T;

Но я просто не вижу, где это подключить. useDispatch<NotFunction<Union-Of-All-My-Action-Creator-Types>> не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...