Menyusun Effect
Rangkai dan gabungkan effect dengan pipe dan generator.
Menyusun Effect adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Mengomposisikan Efek
Efek adalah nilai, sehingga Anda membangun program dengan mengomposisikannya. Alat utamanya adalah Effect.pipe, Effect.map, Effect.flatMap, dan sintaks berbasis pembangkit Effect.gen.
pipe: Meneruskan melalui Fungsi
pipe meneruskan efek melalui serangkaian transformasi dari kiri ke kanan, sehingga menghindari penyarangan yang dalam.
import { Effect, pipe } from "effect";
const program = pipe(
Effect.succeed(2),
Effect.map((n) => n + 1),
Effect.map((n) => n * 10)
);
// Effect<number, never, never> producing 30map: Mengubah Nilai Keberhasilan
Effect.map menerapkan fungsi murni pada nilai keberhasilan, tanpa mengubah saluran galat dan persyaratan.
import { Effect } from "effect";
const doubled = Effect.map(Effect.succeed(21), (n) => n * 2);
// Effect<number, never, never>flatMap: Mengurutkan Efek
Jika langkah berikutnya sendiri merupakan efek, gunakan flatMap (juga disebut chain). Operasi ini menjalankan efek pertama, lalu memberikan nilainya ke fungsi yang mengembalikan efek lain.
import { Effect, pipe } from "effect";
const getId = Effect.succeed(1);
const loadUser = (id: number) => Effect.succeed({ id, name: "Ada" });
const program = pipe(getId, Effect.flatMap(loadUser));
// Effect<{ id: number; name: string }, never, never>map vs flatMap
Gunakan map ketika fungsi Anda mengembalikan nilai biasa; gunakan flatMap ketika fungsi tersebut mengembalikan efek. Menggunakan map dengan fungsi yang mengembalikan efek akan menghasilkan efek bersarang.
Saluran Terakumulasi
Saat Anda mengurutkan efek, tipe galatnya bergabung dan persyaratannya juga bergabung. Tipe hasil komposisi mencerminkan segala hal yang dapat gagal dan segala hal yang diperlukan.
// Effect<A, E1, R1> then Effect<B, E2, R2>
// => Effect<B, E1 | E2, R1 | R2>Effect.gen: Sintaks Pembangkit
Effect.gen memungkinkan Anda menulis kode efek berurutan yang terbaca seperti async/await, menggunakan yield* untuk membuka setiap efek.
import { Effect } from "effect";
const program = Effect.gen(function* () {
const id = yield* Effect.succeed(1);
const user = yield* Effect.succeed({ id, name: "Ada" });
return user.name;
});
// Effect<string, never, never>gen vs pipe
gen lebih jelas untuk alur linear dengan banyak langkah dan variabel perantara; pipe lebih unggul untuk rangkaian transformasi singkat. Keduanya dapat digunakan bersama secara bebas.
Menggabungkan Efek yang Tidak Bergantung
Effect.all menjalankan beberapa efek dan mengumpulkan hasilnya, serta mengakumulasikan galat dan persyaratan dari semuanya.
import { Effect } from "effect";
const both = Effect.all([Effect.succeed(1), Effect.succeed("x")]);
// Effect<[number, string], never, never>Tetap Malas
Semua ini hanya mendeskripsikan program. Tidak ada yang dijalankan sampai Anda menjalankannya di batas program dengan Effect.runPromise atau Effect.runSync.
import { Effect } from "effect";
// const result = await Effect.runPromise(program);Mengapa Ini Penting
Komposisi membuat efek menjadi praktis: Anda merangkai bagian-bagian kecil bertipe menjadi program besar, sementara kompiler melacak setiap kesalahan dan dependensi. map, flatMap, pipe, dan gen adalah kata kerja sehari-hari dalam kode Effect.
Pemeriksaan Singkat
Periksa pemahaman Anda tentang komposisi efek.
Ringkasan
Anda menyusun efek dengan map (mengubah nilai yang berhasil), flatMap (mengurutkan langkah-langkah yang mengembalikan efek), pipe (meneruskan nilai melalui transformasi), dan Effect.gen (sintaks generator yang menyerupai await). Kanal kesalahan dan persyaratan terakumulasi sebagai gabungan, dan tidak ada yang dijalankan sampai Anda mengeksekusinya di titik akhir.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menyusun Effect” gratis?
Ya — teks lengkap “Menyusun Effect” 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 “Menyusun Effect”?
Rangkai dan gabungkan effect dengan pipe dan generator. 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 3 dari 4.
Berapa lama pelajaran “Menyusun Effect” 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.