ReduxJS/Toolkit: TypeScript
posted in javascript on • by Wouter Van Schandevijl •You don’t want to be using useDispatch
, useSelector
etc directly
in your code. Instead they are wrapped so that you can enjoy complete
type safety!
TypeScript Hooks
import { configureStore } from "@reduxjs/toolkit";
import { useDispatch, useSelector } from "react-redux";
const store = configureStore({});
export type AppDispatch = typeof store.dispatch;
export const useAppDispatch = useDispatch.withTypes<AppDispatch>();
export type RootState = ReturnType<typeof store.getState>;
export const useAppSelector = useSelector.withTypes<RootState>();
createAsyncThunk
import { Action, createAsyncThunk, ThunkAction } from "@reduxjs/toolkit";
export type AppThunk<ThunkReturnType = void> = ThunkAction<ThunkReturnType, RootState, unknown, Action>;
export const createAppAsyncThunk = createAsyncThunk.withTypes<{state: RootState, dispatch: AppDispatch}>();
// Complete example:
const createAppAsyncThunk = createAsyncThunk.withTypes<{
state: RootState
dispatch: AppDispatch
rejectValue: string
extra: { whatever: number }
}>()
createSelector
// Wrapping reselect createSelector
import { createSelector } from "@reduxjs/toolkit";
const createAppSelector = createSelector.withTypes<RootState>();
Stuff that came into being during the making of this post
Category:
javascript
Tags:
tutorial
react