Komposisi Fungsi dengan Jenis
Susun fungsi sambil mempertahankan keamanan jenis.
Komposisi Fungsi dengan Jenis 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.
Apa Itu Komposisi?
Komposisi fungsi menggabungkan fungsi-fungsi kecil menjadi fungsi yang lebih besar. compose(f, g) menghasilkan fungsi yang pertama-tama menerapkan g, lalu meneruskan hasilnya ke f.
Definisi Inti
Secara matematis, compose(f, g)(x) = f(g(x)). Fungsi-fungsi dijalankan dari kanan ke kiri: fungsi paling kanan dijalankan terlebih dahulu.
const compose = (f: (n: number) => number, g: (n: number) => number) =>
(x: number) => f(g(x));
const inc = (n: number) => n + 1;
const dbl = (n: number) => n * 2;
console.log(compose(inc, dbl)(5)); // 11 (5*2 then +1)Urutan dari Kanan ke Kiri
Urutan sangat penting. compose(inc, dbl) menggandakan nilai terlebih dahulu, lalu menambahkannya, sedangkan compose(dbl, inc) menambahkannya terlebih dahulu. Bacalah komposisi dari bagian dalam ke luar.
console.log(compose(dbl, inc)(5)); // 12 (5+1 then *2)Mengetik Komposisi dengan Generik
Generik memungkinkan tipe masukan dan keluaran berbeda. g memetakan A ke B, f memetakan B ke C, dan hasilnya memetakan A ke C.
function compose<A, B, C>(f: (b: B) => C, g: (a: A) => B): (a: A) => C {
return a => f(g(a));
}Mengubah Tipe di Sepanjang Proses
Karena generiknya membentuk rangkaian A -> B -> C, komposisi dapat mengubah sebuah nilai melalui beberapa bentuk, misalnya dari string menjadi angka lalu kembali menjadi string.
const length = (s: string) => s.length;
const toStr = (n: number) => "len=" + n;
const describe = compose(toStr, length);
console.log(describe("hello")); // len=5Batas Tipe Harus Cocok
Keluaran dari g harus cocok dengan masukan dari f. Jika keduanya tidak sesuai, compiler menolak komposisi tersebut dan mendeteksi kesalahan penyambungan sejak awal.
// compose(length, toStr) would error:
// toStr returns string, length expects string -> ok here,
// but mismatched pairs are flagged by the compiler.Menyusun Tiga Fungsi
Anda dapat menyarangkan komposisi atau menulis versi dengan tiga argumen. Aturan dari kanan ke kiri tetap berlaku pada semuanya.
const compose3 = <A, B, C, D>(
f: (c: C) => D, g: (b: B) => C, h: (a: A) => B
) => (a: A): D => f(g(h(a)));
const inc = (n: number) => n + 1;
const dbl = (n: number) => n * 2;
const neg = (n: number) => -n;
console.log(compose3(neg, dbl, inc)(3)); // -8Komposisi Membangun Alur Pemrosesan
Dengan menyusun fungsi-fungsi murni yang kecil, Anda dapat merangkai transformasi kompleks secara deklaratif. Setiap bagian tetap dapat diuji secara terpisah.
const trim = (s: string) => s.trim();
const upper = (s: string) => s.toUpperCase();
const clean = compose(upper, trim);
console.log(clean(" hi ")); // HIMengapa Fungsi Murni Paling Baik untuk Komposisi
Komposisi mengasumsikan bahwa setiap fungsi hanya bergantung pada masukannya. Fungsi murni menjamin hal ini, sehingga komposisinya menghasilkan fungsi murni lain yang dapat diprediksi.
compose dibandingkan alur
compose berjalan dari kanan ke kiri dan mencerminkan notasi matematika. Banyak orang lebih menyukai pembacaan dari kiri ke kanan, dan itulah yang disediakan oleh pipe, yang akan dibahas berikutnya.
Pertahankan Bagian-Bagian Tetap Kecil
Komposisi paling bermanfaat ketika setiap fungsi melakukan satu hal kecil. Langkah-langkah yang kecil, bernama, dan murni membuat alur pemrosesan hasil komposisi dapat menjelaskan dirinya sendiri serta mudah disusun ulang.
Pemeriksaan Singkat
Pemeriksaan singkat tentang pelajaran ini.
Ringkasan
compose(f, g)(x) = f(g(x)) berjalan dari kanan ke kiri. Rangkaian tipe generik A -> B -> C mengharuskan keluaran dari g cocok dengan masukan dari f, sehingga compiler dapat memverifikasi alur pemrosesan fungsi-fungsi kecil yang murni.
Belajar TypeScript dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 101
- Pelajaran
- 352
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Komposisi Fungsi dengan Jenis” gratis?
Ya — teks lengkap “Komposisi Fungsi dengan Jenis” 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 “Komposisi Fungsi dengan Jenis”?
Susun fungsi sambil mempertahankan keamanan jenis. 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 “Komposisi Fungsi dengan Jenis” 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
- Fungsi Murni dan Imutabilitas
- Currying dan Penerapan Parsial
- Komposisi Fungsi dengan Jenis
- Utilitas pipe dan flow Bertipe