Я пытаюсь предотвратить компиляцию такого рода кода, так как я видел эту ошибку несколько раз, и трудно заметить, если вы ее не ищете:
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>>
не работает.