TypeScript Academy · Pelajaran

Menggubah Kesan

Rangkaikan dan gabungkan kesan dengan pipe dan penjana.

Pelajaran 3 daripada 413 langkah

Menggubah Kesan ialah pelajaran TypeScript Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran TypeScript Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Menggubah Kesan

Kesan ialah nilai, jadi anda membina program dengan menggubahnya. Alat terasnya ialah Effect.pipe, Effect.map, Effect.flatMap dan sintaks berasaskan penjana Effect.gen.

pipe: Menyalurkan melalui Fungsi

pipe menyalurkan kesan melalui satu siri transformasi dari kiri ke kanan, sekali gus mengelakkan sarang yang mendalam.

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 30

map: Mengubah Nilai Kejayaan

Effect.map menggunakan fungsi tulen pada nilai kejayaan, tanpa mengubah saluran ralat dan keperluan.

import { Effect } from "effect";

const doubled = Effect.map(Effect.succeed(21), (n) => n * 2);
// Effect<number, never, never>

flatMap: Menyusun Kesan

Apabila langkah seterusnya sendiri merupakan kesan, gunakan flatMap (juga dipanggil chain). Ia menjalankan kesan pertama, kemudian menyalurkan nilainya kepada fungsi yang mengembalikan kesan 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 berbanding flatMap

Gunakan map apabila fungsi anda mengembalikan nilai biasa; gunakan flatMap apabila ia mengembalikan kesan. Menggunakan map dengan fungsi yang mengembalikan kesan menyebabkan anda mendapat kesan bersarang.

Saluran Terkumpul

Apabila anda menyusun kesan mengikut urutan, jenis ralatnya bergabung menjadi kesatuan dan keperluannya juga bergabung menjadi kesatuan. Jenis gubahan itu mencerminkan segala perkara yang boleh gagal dan segala perkara yang diperlukan.

// Effect<A, E1, R1> then Effect<B, E2, R2>
// => Effect<B, E1 | E2, R1 | R2>

Effect.gen: Sintaks Penjana

Effect.gen membolehkan anda menulis kod kesan berjujukan yang dibaca seperti async/await, dengan menggunakan yield* untuk membuka bungkus setiap kesan.

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 berbanding pipe

gen lebih jelas untuk aliran linear yang mempunyai banyak langkah dan pemboleh ubah perantaraan; pipe lebih sesuai untuk rantai transformasi yang pendek. Kedua-duanya boleh saling beroperasi dengan bebas.

Menggabungkan Kesan Bebas

Effect.all menjalankan beberapa kesan dan mengumpulkan hasilnya, sambil mengumpulkan ralat dan keperluan daripada kesemuanya.

import { Effect } from "effect";

const both = Effect.all([Effect.succeed(1), Effect.succeed("x")]);
// Effect<[number, string], never, never>

Masih Malas

Semua ini hanya menerangkan program. Tiada apa-apa dilaksanakan sehingga anda menjalankannya di pinggir sistem dengan Effect.runPromise atau Effect.runSync.

import { Effect } from "effect";
// const result = await Effect.runPromise(program);

Mengapa Ini Penting

Penggabunganlah yang menjadikan efek praktikal: anda menggabungkan bahagian kecil yang bertip menjadi program besar, sementara pengkompil menjejaki setiap ralat dan kebergantungan. map, flatMap, pipe dan gen ialah kata kerja harian dalam kod Effect.

Semakan Pantas

Semak pemahaman anda tentang penggabungan efek.

Ringkasan

Anda menggabungkan efek dengan map (mengubah nilai yang berjaya), flatMap (menyusun langkah yang mengembalikan efek), pipe (mengalirkan nilai melalui perubahan) dan Effect.gen (sintaks penjana seperti menunggu). Saluran ralat dan keperluan terkumpul sebagai kesatuan, dan tiada apa-apa dijalankan sehingga anda melaksanakannya di hujung.

Percuma untuk bermula

Pelajari TypeScript dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
101
Pelajaran
352

Soalan Lazim

Adakah pelajaran “Menggubah Kesan” percuma?

Ya — teks penuh “Menggubah Kesan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus TypeScript Academy, tingkat taraf kepada CoddyKit PRO. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Menggubah Kesan”?

Rangkaikan dan gabungkan kesan dengan pipe dan penjana. Anda berlatih TypeScript Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan TypeScript Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran TypeScript Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Menggubah Kesan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mengapa Sistem Kesan Penting
  2. Jenis Effect
  3. Menggubah Kesan
  4. Saluran Ralat dan Kebergantungan
← Kembali ke TypeScript Academy