Tipando slices e thunks do Redux Toolkit
Utilize createSlice e createAsyncThunk com inferência completa de tipos
Tipando slices e thunks do Redux Toolkit é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.
Por que tipar o Redux Toolkit?
O Redux Toolkit (RTK) oferece excelente suporte a TypeScript. A tipagem adequada garante que ações, state e tarefas assíncronas sejam todas seguras quanto aos tipos, sem asserções de tipo manuais.
import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";Tipando a interface de state
Defina o state da sua fatia como uma interface TypeScript antes de criar a fatia.
interface UserState {
users: User[];
loading: boolean;
error: string | null;
}
const initialState: UserState = {
users: [],
loading: false,
error: null,
};createSlice com state tipado
Passe o tipo de state como um genérico para garantir que os reducers recebam state com a tipagem correta.
const userSlice = createSlice({
name: "users",
initialState,
reducers: {
setLoading(state, action: PayloadAction<boolean>) {
state.loading = action.payload; // state: UserState — typed
},
},
});Tipagem de PayloadAction
Use PayloadAction do RTK para tipar action.payload nos reducers.
import { PayloadAction } from "@reduxjs/toolkit";
reducers: {
addUser(state, action: PayloadAction<User>) {
state.users.push(action.payload); // action.payload: User
},
}createAsyncThunk com tipos
Forneça tipos para o valor de retorno, o argumento da tarefa assíncrona e a configuração da API da tarefa.
const fetchUsers = createAsyncThunk<User[], void, { rejectValue: string }>(
"users/fetchAll",
async (_, { rejectWithValue }) => {
try {
return await api.getUsers();
} catch (e) {
return rejectWithValue("Failed to fetch");
}
}
);Lidando com ações de tarefas em extraReducers
Use a API de callback builder para lidar de forma totalmente tipada com ações de tarefas pendentes, concluídas ou rejeitadas.
const userSlice = createSlice({
name: "users",
initialState,
reducers: {},
extraReducers: (builder) => {
builder
.addCase(fetchUsers.pending, (state) => { state.loading = true; })
.addCase(fetchUsers.fulfilled, (state, action) => {
state.users = action.payload; // action.payload: User[]
state.loading = false;
})
.addCase(fetchUsers.rejected, (state, action) => {
state.error = action.payload ?? "Unknown error";
});
},
});RootState e AppDispatch tipados
Exporte RootState e AppDispatch tipados do arquivo do store para uso em seletores e ganchos.
import { configureStore } from "@reduxjs/toolkit";
const store = configureStore({ reducer: { users: userSlice.reducer } });
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;useSelector e useDispatch tipados
Crie versões tipadas dos ganchos do Redux para evitar repetir asserções de tipo em todos os componentes.
import { useDispatch, useSelector, TypedUseSelectorHook } from "react-redux";
export const useAppDispatch = () => useDispatch<AppDispatch>();
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;Tipagem do RTK Query
O RTK Query gera ganchos totalmente tipados a partir das definições dos seus endpoints — não é necessária nenhuma tipagem manual da resposta.
const api = createApi({
reducerPath: "api",
baseQuery: fetchBaseQuery({ baseUrl: "/api" }),
endpoints: (build) => ({
getUser: build.query<User, string>({
query: (id) => `/users/${id}`,
}),
}),
});
export const { useGetUserQuery } = api;Tipagem de seletores
Escreva seletores tipados usando RootState para garantir acesso ao state com segurança de tipos.
const selectUsers = (state: RootState): User[] => state.users.users;
const selectLoading = (state: RootState): boolean => state.users.loading;Recapitulação: RTK tipado
TypeScript com Redux Toolkit: defina uma interface de state, use PayloadAction nos reducers, tipifique os genéricos de createAsyncThunk, exporte RootState e AppDispatch e crie wrappers de ganchos tipados.
Verificação rápida
Qual anotação de tipo torna action.payload seguro quanto aos tipos em um reducer do RTK?
O que você aprendeu
TypeScript com Redux Toolkit: defina interfaces para o state das fatias, use PayloadAction nos reducers, tipifique createAsyncThunk com três genéricos e exporte RootState/AppDispatch tipados com wrappers de ganchos para uso nos componentes.
Aprenda TypeScript com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 101
- Aulas
- 352
Perguntas Frequentes
A aula “Tipando slices e thunks do Redux Toolkit” é grátis?
Sim — o texto completo de “Tipando slices e thunks do Redux Toolkit” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.
O que vou aprender em “Tipando slices e thunks do Redux Toolkit”?
Utilize createSlice e createAsyncThunk com inferência completa de tipos Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Tipando slices e thunks do Redux Toolkit”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Tipando slices e thunks do Redux Toolkit
- Padrões de tipagem de stores Zustand
- XState: máquinas de estados tipadas
- Estado derivado e seletores com tipos