XState: Türlendirilmiş Durum Makineleri
XState'te TypeScript ile durum makinelerini modelleyin
XState: Türlendirilmiş Durum Makineleri, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 3. 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.
TypeScript ile XState Neden Kullanılır?
XState, uygulama state'ini açık durum makineleri olarak modeller. TypeScript ile durumlar, olaylar ve bağlam tamamen türleri belirlenmiş olur ve derleme zamanında geçersiz durum geçişleri önlenir.
import { createMachine, assign } from "xstate";Durum Makinesi Türlerini Tanımlama
XState v5, bağlam, olaylar ve durumlar için tür parametreleri kullanır. machine oluşturulmadan önce bunları tanımlayın.
type TrafficContext = { count: number };
type TrafficEvent =
| { type: "TURN_GREEN" }
| { type: "TURN_YELLOW" }
| { type: "TURN_RED" };Türü Belirlenmiş machine Oluşturma
Durumların ve geçişlerin tam tür denetimi için bağlam ve olay türlerinizi createMachine işlevine geçirin.
const trafficMachine = createMachine({
types: {} as { context: TrafficContext; events: TrafficEvent },
id: "traffic",
initial: "red",
context: { count: 0 },
states: {
red: { on: { TURN_GREEN: "green" } },
green: { on: { TURN_YELLOW: "yellow" } },
yellow: { on: { TURN_RED: "red" } },
},
});Tür Güvenli Bağlam Güncellemeleri
Bağlamı güncellemek için assign kullanın; TypeScript, döndürülen kısmi bağlamın tanımlanan türle eşleşmesini sağlar.
const machine = createMachine({
types: {} as { context: TrafficContext; events: TrafficEvent },
// ...
entry: assign({ count: 0 }),
on: {
TURN_GREEN: {
actions: assign(({ context }) => ({ count: context.count + 1 })),
},
},
});machine'i React'te Kullanma
@xstate/react paketindeki useMachine kancası, türleri belirlenmiş state ve gönderme işlevi döndürür.
import { useMachine } from "@xstate/react";
function TrafficLight() {
const [state, send] = useMachine(trafficMachine);
// state.value: "red" | "green" | "yellow"
// send: (event: TrafficEvent) => void
return <button onClick={() => send({ type: "TURN_GREEN" })}>Go</button>;
}Tür Güvenli Koruyucular
Tür koruyucu işlevler, türleri belirlenmiş bağlam ve olay alır ve koşulların doğru türlerle denetlenmesini sağlar.
const machine = createMachine({
types: {} as { context: TrafficContext; events: TrafficEvent },
states: {
red: {
on: {
TURN_GREEN: {
guard: ({ context }) => context.count < 10, // context: TrafficContext
target: "green",
},
},
},
},
});Tür Güvenli Actions
Adlandırılmış eylemlerin türleri, machine yapılandırmasında bildirilerek ve setup aracılığıyla uygulanarak belirlenebilir.
import { setup } from "xstate";
const machine = setup({
types: {} as { context: TrafficContext; events: TrafficEvent },
actions: {
logTransition: ({ context, event }) => {
console.log(context.count, event.type);
},
},
}).createMachine({ /* ... */ });Paralel Durumlar
XState paralel (ortogonal) bölgeleri destekler. TypeScript, paralel durumların state değerlerini nesneler olarak izler.
states: {
ui: {
type: "parallel",
states: {
modal: { initial: "closed", states: { closed: {}, open: {} } },
tooltip: { initial: "hidden", states: { hidden: {}, visible: {} } },
},
},
}State Eşleştirme
Geçerli state'i denetlemek için state.matches() kullanın; XState bunu bilinen durum adları için tür güvenli hale getirir.
const [state] = useMachine(trafficMachine);
if (state.matches("green")) {
// TypeScript knows we're in the green state
}XState Inspector
Üretim kodundaki tür güvenliğini kaybetmeden geliştirme sırasında durum makinelerinde görsel hata ayıklamak için XState Inspector'a bağlanın.
import { inspect } from "@xstate/inspect";
inspect({ iframe: false }); // opens state machine inspectorÖzet: XState'de Tür Belirleme
XState'in türleri belirlenmiş makineleri bağlam ve olay türlerini tanımlar, türleri belirlenmiş bağlam güncellemeleri için assign kullanır ve tamamen türleri belirlenmiş state ile olay gönderimi için React'e useMachine aracılığıyla bağlanır.
Hızlı Kontrol
XState v5 machine yapılandırmasındaki types özelliği ne işe yarar?
Öğrendikleriniz
TypeScript ile XState, tamamen türleri belirlenmiş durum makineleri sunar: bağlam ve olay türlerini tanımlayın, türleri belirlenmiş güncellemeler, koruyucu koşullar ve eylemler için assign kullanın. useMachine kancası, React bileşenlerinde türleri belirlenmiş state ve gönderim sağlar.
Sıkça Sorulan Sorular
“XState: Türlendirilmiş Durum Makineleri” dersi ücretsiz mi?
Evet — “XState: Türlendirilmiş Durum Makineleri” 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.
“XState: Türlendirilmiş Durum Makineleri” dersinde ne öğreneceğim?
XState'te TypeScript ile durum makinelerini modelleyin 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 3. dersidir.
“XState: Türlendirilmiş Durum Makineleri” 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
- Redux Toolkit Dilimlerini ve Thunk'larını Türlendirme
- Zustand Store Türlendirme Örüntüleri
- XState: Türlendirilmiş Durum Makineleri
- Türlerle Türetilmiş Durum ve Seçiciler