0Pricing
TypeScript Academy · Pelajaran

Mengapa Sistem Effect Penting

Jadikan efek samping dan kegagalan eksplisit serta dapat dikomposisikan.

Mengapa Sistem Effect Penting 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.

Mengapa Sistem Efek Penting

Sistem efek membuat efek samping, kegagalan, dan dependensi menjadi eksplisit serta dapat dikomposisikan dalam sistem tipe. Alih-alih lemparan galat tersembunyi dan operasi masukan/keluaran implisit, setiap efek adalah nilai yang dapat Anda teruskan, ubah, dan gabungkan.

Masalah dengan Operasi Asinkron dan Lemparan Galat Mentah

async/await biasa dengan throw menyembunyikan informasi penting: tanda tangan fungsi tidak menyatakan galat apa yang dapat dilemparkannya atau sumber daya apa yang dibutuhkannya.

async function getUser(id: number): Promise<User> {
  // may throw NotFoundError, may throw NetworkError
  // needs a database connection from... somewhere
  // none of this is in the type
  return await db.users.find(id);
}

Galat Tidak Terlihat

Promise<User> tidak memberi tahu Anda apa pun tentang kemungkinan kegagalan. Pemanggil tidak dapat mengetahui galat mana yang harus ditangani, sehingga mereka mungkin menangkap terlalu banyak galat atau sepenuhnya melupakan beberapa kasus.

Dependensi Bersifat Implisit

Fungsi di atas secara diam-diam bergantung pada basis data. Dependensi tersebut diambil dari sesuatu yang global atau dari impor, sehingga pengujian dan penggantiannya menjadi canggung serta kontrak sebenarnya tersembunyi.

Apa Itu Nilai Efek

Efek adalah deskripsi suatu komputasi, bukan komputasi itu sendiri. Membangunnya tidak melakukan apa pun; Anda menjalankannya nanti. Dengan demikian, efek menjadi nilai murni yang dapat Anda komposisikan seperti data.

import { Effect } from "effect";

// A description: produces number, no errors, no requirements
const program = Effect.succeed(42);
// Nothing has run yet.

Kegagalan Eksplisit

Efek membawa kemungkinan galatnya dalam tipe, sehingga kompiler memaksa Anda untuk menanganinya atau meneruskannya secara sengaja.

import { Effect } from "effect";

const risky = Effect.fail(new Error("boom"));
// type encodes that this can fail with Error

Dependensi Eksplisit

Efek juga melacak layanan yang diperlukan dalam tipenya. Komputasi yang memerlukan Database menyatakan hal itu dan tidak dapat dijalankan sampai layanan tersebut disediakan.

Kemampuan untuk Dikomposisikan

Karena efek adalah nilai, Anda menggabungkannya dengan operator (map, flatMap, zip) seperti halnya array atau janji, tetapi saluran galat dan dependensi ikut dibawa secara otomatis.

Eksekusi Tertunda

Tidak ada yang terjadi sampai Anda menjalankan efek secara eksplisit, misalnya dengan Effect.runPromise. Pemisahan antara deskripsi dan eksekusi ini memungkinkan percobaan ulang, interupsi, dan pengujian tanpa memicu ulang efek samping.

import { Effect } from "effect";

const program = Effect.succeed(1);
// Run at the edge of your app:
// const result = await Effect.runPromise(program);

Perbandingan dengan Janji

Promise bersifat segera (langsung berjalan), tidak bertipe untuk galat, dan tidak menyadari dependensi. Effect bersifat malas, memiliki tipe untuk galat, dan menyadari dependensi, sehingga memuat informasi yang lebih lengkap.

Mengapa Ini Penting

Membuat efek, galat, dan dependensi menjadi eksplisit berarti kompiler menegakkan penanganan yang benar, kode menjadi dapat diuji dengan mengganti dependensi, dan alur asinkron yang kompleks dapat dikomposisikan dengan andal—itulah alasan di balik pustaka seperti Effect-TS.

Pemeriksaan Singkat

Uji pemahaman Anda tentang alasan sistem efek penting.

Ringkasan

Sistem efek membuat efek samping, kegagalan, dan dependensi menjadi eksplisit. Tidak seperti janji yang berjalan segera, tidak menyadari galat, dan menyembunyikan dependensi, efek adalah deskripsi komputasi yang malas dan dapat dikomposisikan; tipenya membawa informasi tentang nilai keberhasilan, galat, dan persyaratan, sehingga memungkinkan komposisi serta kemampuan pengujian yang andal.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengapa Sistem Effect Penting” gratis?

Ya — teks lengkap “Mengapa Sistem Effect Penting” 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 “Mengapa Sistem Effect Penting”?

Jadikan efek samping dan kegagalan eksplisit serta dapat dikomposisikan. 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 “Mengapa Sistem Effect Penting” 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

  1. Mengapa Sistem Effect Penting
  2. Jenis Effect
  3. Menyusun Effect
  4. Saluran Error dan Dependensi
← Kembali ke TypeScript Academy