0Pricing
TypeScript Academy · Ders

Redux Toolkit Dilimlerini ve Thunk'larını Türlendirme

Tam tür çıkarımıyla createSlice ve createAsyncThunk kullanın

Redux Toolkit Dilimlerini ve Thunk'larını Türlendirme, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.

Redux Toolkit'te Tür Belirleme Neden Önemlidir?

Redux Toolkit (RTK), güçlü TypeScript desteği içerir. Uygun tür belirleme, elle tür doğrulamaları yapmadan eylemlerin, state'in ve eşzamansız eylem işlevlerinin tümünün tür güvenli olmasını sağlar.

import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";

State Arayüzünün Türünü Belirleme

Dilim oluşturulmadan önce dilim state'inizi bir TypeScript arayüzü olarak tanımlayın.

interface UserState {
  users: User[];
  loading: boolean;
  error: string | null;
}

const initialState: UserState = {
  users: [],
  loading: false,
  error: null,
};

Türü Belirlenmiş State ile createSlice

Azaltıcıların doğru türü belirlenmiş state almasını sağlamak için state türünü bir genel tür olarak geçirin.

const userSlice = createSlice({
  name: "users",
  initialState,
  reducers: {
    setLoading(state, action: PayloadAction<boolean>) {
      state.loading = action.payload; // state: UserState — typed
    },
  },
});

PayloadAction Tür Belirleme

Azaltıcılardaki action.payload için tür belirlemek üzere RTK'den PayloadAction kullanın.

import { PayloadAction } from "@reduxjs/toolkit";

reducers: {
  addUser(state, action: PayloadAction<User>) {
    state.users.push(action.payload); // action.payload: User
  },
}

Türlerle createAsyncThunk

Dönüş değeri, eşzamansız eylem işlevinin bağımsız değişkeni ve API yapılandırması için türler sağlayın.

const fetchUsers = createAsyncThunk<User[], void, { rejectValue: string }>(
  "users/fetchAll",
  async (_, { rejectWithValue }) => {
    try {
      return await api.getUsers();
    } catch (e) {
      return rejectWithValue("Failed to fetch");
    }
  }
);

extraReducers İçinde Eşzamansız Eylem İşlevlerini Ele Alma

Bekleyen, tamamlanan ve reddedilen eşzamansız eylem işlevlerini tamamen tür güvenli biçimde ele almak için builder geri çağırma API'sini kullanın.

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";
      });
  },
});

Tür Güvenli RootState ve AppDispatch

Seçicilerde ve kancalarda kullanmak üzere türleri belirlenmiş RootState ve AppDispatch değerlerini store dosyasından dışa aktarın.

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;

Türü Belirlenmiş useSelector ve useDispatch

Her bileşende tür doğrulamalarını tekrarlamaktan kaçınmak için Redux kancalarının türleri belirlenmiş sürümlerini oluşturun.

import { useDispatch, useSelector, TypedUseSelectorHook } from "react-redux";
export const useAppDispatch = () => useDispatch<AppDispatch>();
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;

RTK Query Tür Belirleme

RTK Query, uç nokta tanımlarınızdan tamamen türleri belirlenmiş kancalar oluşturur; yanıt türlerini elle belirtmeniz gerekmez.

const api = createApi({
  reducerPath: "api",
  baseQuery: fetchBaseQuery({ baseUrl: "/api" }),
  endpoints: (build) => ({
    getUser: build.query<User, string>({
      query: (id) => `/users/${id}`,
    }),
  }),
});
export const { useGetUserQuery } = api;

Seçici Türlerini Belirleme

Tür güvenli state erişimi sağlamak için RootState kullanan türleri belirlenmiş seçiciler yazın.

const selectUsers = (state: RootState): User[] => state.users.users;
const selectLoading = (state: RootState): boolean => state.users.loading;

Özet: Türü Belirlenmiş RTK

Redux Toolkit TypeScript: bir state arayüzü tanımlayın, azaltıcılarda PayloadAction kullanın, createAsyncThunk genel türlerini belirleyin, RootState ve AppDispatch değerlerini dışa aktarın ve türleri belirlenmiş kanca sarmalayıcıları oluşturun.

Hızlı Kontrol

Bir RTK azaltıcısında action.payload değerini tür güvenli yapan tür açıklaması hangisidir?

Öğrendikleriniz

Redux Toolkit TypeScript: dilim state arayüzlerini tanımlayın, azaltıcılarda PayloadAction kullanın, createAsyncThunk için üç genel tür belirleyin ve bileşenlerde kullanılmak üzere kanca sarmalayıcılarıyla türleri belirlenmiş RootState/AppDispatch değerlerini dışa aktarın.

Sıkça Sorulan Sorular

“Redux Toolkit Dilimlerini ve Thunk'larını Türlendirme” dersi ücretsiz mi?

Evet — “Redux Toolkit Dilimlerini ve Thunk'larını Türlendirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.

“Redux Toolkit Dilimlerini ve Thunk'larını Türlendirme” dersinde ne öğreneceğim?

Tam tür çıkarımıyla createSlice ve createAsyncThunk kullanın TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Redux Toolkit Dilimlerini ve Thunk'larını Türlendirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Redux Toolkit Dilimlerini ve Thunk'larını Türlendirme
  2. Zustand Store Türlendirme Örüntüleri
  3. XState: Türlendirilmiş Durum Makineleri
  4. Türlerle Türetilmiş Durum ve Seçiciler
← TypeScript Academy Sayfasına Dön