Menentukan Jenis Peta Peristiwa
Petakan nama peristiwa ke jenis muatannya.
Menentukan Jenis Peta Peristiwa adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.
Apa Itu Pemetaan Peristiwa?
Pemetaan peristiwa adalah antarmuka yang menghubungkan setiap nama peristiwa dengan bentuk muatannya. Pemetaan ini menjadi satu-satunya sumber kebenaran untuk sistem peristiwa.
interface Events {
login: { userId: string };
logout: void;
}
// "login" carries a payload; "logout" carries none.Memetakan Nama ke Muatan
Setiap kunci properti adalah nama peristiwa dan tipe nilainya adalah muatan. Dengan demikian, sistem tipe mengetahui secara tepat data yang diharapkan oleh setiap peristiwa.
interface Events {
message: { text: string; from: string };
typing: { userId: string };
}
const sample: Events["message"] = { text: "hi", from: "ada" };
console.log(sample.text, sample.from);Peristiwa Tanpa Muatan
Beberapa peristiwa tidak membawa data. Modelkan peristiwa tersebut dengan void (atau objek kosong) untuk menandakan bahwa tidak ada yang perlu diteruskan.
interface Events {
open: void;
close: void;
}
// Handlers for these receive no meaningful argument.
console.log("payloadless events use void");Mengambil Tipe Nama Peristiwa
Gunakan keyof untuk mendapatkan gabungan semua nama peristiwa yang valid dari pemetaan, yang berguna untuk membatasi parameter fungsi.
interface Events {
login: { userId: string };
logout: void;
}
type EventName = keyof Events; // "login" | "logout"
const e: EventName = "login";
console.log(e);Mencari Tipe Muatan
Indeks pemetaan dengan nama peristiwa untuk mendapatkan tipe muatan peristiwa tersebut: Events["login"] adalah { userId: string }.
interface Events {
login: { userId: string };
logout: void;
}
type LoginPayload = Events["login"]; // { userId: string }
const p: LoginPayload = { userId: "u1" };
console.log(p.userId);Pemetaan Peristiwa yang Lebih Lengkap
Aplikasi nyata memiliki banyak peristiwa. Masing-masing mendapatkan kontrak muatan yang jelas di satu tempat, sehingga penghasil dan konsumen selalu memiliki kesepakatan yang sama.
interface Events {
cartAdd: { productId: string; qty: number };
cartRemove: { productId: string };
checkout: { total: number };
}
const a: Events["cartAdd"] = { productId: "p1", qty: 2 };
console.log(a.productId, a.qty);Muatan Dapat Berupa Gabungan
Tipe muatan itu sendiri dapat berupa gabungan terdiskriminasi, sehingga satu peristiwa dapat membawa beberapa bentuk yang saling berkaitan.
interface Events {
status:
| { kind: "online" }
| { kind: "offline"; since: number };
}
const s: Events["status"] = { kind: "offline", since: 100 };
console.log(s.kind);Menggunakan Kembali Tipe Muatan
Anda dapat mendefinisikan tipe muatan secara terpisah lalu merujuknya dalam pemetaan, sehingga antarmuka tetap rapi dan bentuk-bentuknya dapat digunakan kembali.
type User = { id: string; name: string };
interface Events {
userCreated: User;
userDeleted: { id: string };
}
const u: Events["userCreated"] = { id: "1", name: "Ada" };
console.log(u.name);Mengapa Pemetaan Lebih Baik daripada Teks Lepas
Tanpa pemetaan, nama peristiwa hanyalah teks biasa dan muatannya adalah any. Pemetaan menyediakan pelengkapan otomatis, validasi, dan kontrak.
// Loose: emit("login", { usrId: "x" }) typo unnoticed, payload any
// Mapped: the interface forces the correct name and payload shape.
console.log("the map is the contract");Pemetaan Menggerakkan API
Pada pelajaran berikutnya, emit dan on akan dibuat generik berdasarkan pemetaan peristiwa, menggunakan keyof dan akses terindeks agar tetap aman tipe.
interface Events {
login: { userId: string };
logout: void;
}
type Name = keyof Events;
type PayloadOf<K extends Name> = Events[K];
const id: PayloadOf<"login"> = { userId: "u" };
console.log(id.userId);Satu-Satunya Sumber Kebenaran
Karena semuanya diturunkan dari pemetaan peristiwa, perubahan muatan di satu tempat akan memperbarui setiap emit dan penangan yang menggunakannya.
interface Events {
ping: { at: number };
}
const p: Events["ping"] = { at: Date.now() };
console.log(typeof p.at);Pemeriksaan Singkat: Pemetaan Peristiwa
Uji pemahaman Anda tentang pengetikan pemetaan peristiwa.
Ringkasan: Mengetik Pemetaan Peristiwa
Anda mempelajari cara memodelkan peristiwa sebagai antarmuka yang memetakan nama ke muatan, menggunakan void untuk peristiwa tanpa muatan, keyof untuk nama, dan akses terindeks untuk tipe muatan sebagai dasar sistem peristiwa yang aman tipe.
interface Events { login: { userId: string }; logout: void }
type Name = keyof Events;
const n: Name = "logout";
console.log(n);Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menentukan Jenis Peta Peristiwa” gratis?
Ya — teks lengkap “Menentukan Jenis Peta Peristiwa” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menentukan Jenis Peta Peristiwa”?
Petakan nama peristiwa ke jenis muatannya. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai TypeScript Academy?
Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Menentukan Jenis Peta Peristiwa” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?
Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Menentukan Jenis Peta Peristiwa
- emit dan on yang Aman Secara Jenis
- Kelas Pemancar Peristiwa Generik
- Menyimpulkan Argumen Pendengar