Gubahan Fungsi dengan Jenis
Gubah fungsi sambil mengekalkan keselamatan jenis.
Gubahan Fungsi dengan Jenis 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.
Apakah Komposisi?
Komposisi fungsi menggabungkan fungsi kecil menjadi fungsi yang lebih besar. compose(f, g) menghasilkan fungsi yang mula-mula menggunakan g, kemudian memberikan hasilnya kepada f.
Definisi Teras
Secara matematik, compose(f, g)(x) = f(g(x)). Fungsi dilaksanakan dari kanan ke kiri: fungsi paling kanan dilaksanakan 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)Susunan Kanan ke Kiri
Susunan penting. compose(inc, dbl) menggandakan dahulu, kemudian menambah satu, manakala compose(dbl, inc) menambah satu dahulu. Baca komposisi dari bahagian dalam ke luar.
console.log(compose(dbl, inc)(5)); // 12 (5+1 then *2)Menaip Komposisi dengan Generik
Generik membolehkan jenis masukan dan keluaran berbeza. g memetakan A kepada B, f memetakan B kepada C, dan hasilnya memetakan A kepada C.
function compose<A, B, C>(f: (b: B) => C, g: (a: A) => B): (a: A) => C {
return a => f(g(a));
}Menukar Jenis Sepanjang Proses
Oleh sebab generik membentuk rantaian A -> B -> C, komposisi boleh mengubah nilai melalui beberapa bentuk, seperti rentetan kepada nombor kemudian kepada rentetan.
const length = (s: string) => s.length;
const toStr = (n: number) => "len=" + n;
const describe = compose(toStr, length);
console.log(describe("hello")); // len=5Sempadan Jenis Mesti Sepadan
Keluaran g mesti sepadan dengan masukan f. Jika kedua-duanya tidak sepadan, pengompil menolak komposisi tersebut dan mengesan kesilapan penyambungan lebih awal.
// compose(length, toStr) would error:
// toStr returns string, length expects string -> ok here,
// but mismatched pairs are flagged by the compiler.Menggabungkan Tiga Fungsi
Anda boleh menyarang komposisi atau menulis versi dengan tiga hujah. Peraturan kanan ke kiri masih terpakai untuk 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 Membina Saluran Paip
Dengan mengkomposisikan fungsi tulen yang kecil, Anda boleh memasang transformasi kompleks secara deklaratif. Setiap bahagian kekal boleh diuji secara berasingan.
const trim = (s: string) => s.trim();
const upper = (s: string) => s.toUpperCase();
const clean = compose(upper, trim);
console.log(clean(" hi ")); // HIMengapa Fungsi Tulen Paling Sesuai Dikomposisikan
Komposisi mengandaikan setiap fungsi hanya bergantung pada masukannya. Fungsi tulen menjamin perkara ini, jadi komposisinya menghasilkan fungsi tulen lain yang boleh dijangka.
compose berbanding pipe
compose dilaksanakan dari kanan ke kiri dan menyerupai notasi matematik. Ramai orang lebih menyukai bacaan dari kiri ke kanan, dan itulah yang disediakan oleh pipe, seperti yang akan dibincangkan seterusnya.
Kekalkan Komponen Kecil
Komposisi paling berkesan apabila setiap fungsi melakukan satu perkara kecil. Langkah yang kecil, bernama dan tulen menjadikan saluran paip yang dikomposisikan dapat menerangkan dirinya sendiri serta mudah disusun semula.
Semakan Pantas
Semakan pantas tentang pelajaran ini.
Rumusan
compose(f, g)(x) = f(g(x)) dilaksanakan dari kanan ke kiri. Rantaian jenis generik A -> B -> C bermakna keluaran g mesti sepadan dengan masukan f, lalu pengompil dapat mengesahkan saluran paip fungsi tulen yang kecil.
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 “Gubahan Fungsi dengan Jenis” percuma?
Ya — teks penuh “Gubahan Fungsi dengan Jenis” 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 “Gubahan Fungsi dengan Jenis”?
Gubah fungsi sambil mengekalkan keselamatan jenis. 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 “Gubahan Fungsi dengan Jenis” 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
- Fungsi Tulen dan Ketidakbolehubahan
- Kari dan Penggunaan Separa
- Gubahan Fungsi dengan Jenis
- Utiliti pipe dan flow Bertaip