0Pricing
TypeScript Academy · Pelajaran

Currying dan Penerapan Parsial

Ubah fungsi dengan banyak argumen menjadi bentuk curried.

Currying dan Penerapan Parsial adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 Kariying?

Kariying mengubah fungsi dengan banyak argumen menjadi rantai fungsi dengan satu argumen. Alih-alih memanggil f(a, b), Anda memanggil f(a)(b).

Contoh Klasik

Di sini, add menerima satu angka lalu mengembalikan fungsi yang menunggu angka berikutnya. TypeScript secara otomatis menyimpulkan tipe fungsi bertingkat tersebut.

const add = (a: number) => (b: number) => a + b;
console.log(add(2)(3)); // 5

Memberi Tipe pada Fungsi Kariying

Tipe eksplisit memperlihatkan rantai tersebut dengan jelas: sebuah fungsi yang mengembalikan fungsi lain. Setiap panah mewakili satu argumen.

type Add = (a: number) => (b: number) => number;
const add: Add = a => b => a + b;
console.log(add(10)(5)); // 15

Penerapan Parsial

Penerapan parsial menetapkan beberapa argumen sekarang dan memasok sisanya nanti. Dengan fungsi kariying, hal ini cukup dilakukan dengan memanggilnya melalui lebih sedikit langkah.

const add = (a: number) => (b: number) => a + b;
const add10 = add(10); // partially applied
console.log(add10(1), add10(2)); // 11 12

Mengapa Penerapan Parsial Membantu

Anda dapat membuat fungsi khusus dari fungsi umum. add10 adalah alat bernama yang dapat digunakan kembali, diturunkan dari add generik, sehingga keterbacaan dan penggunaan ulang meningkat.

Kariying dengan Tiga Argumen

Pola ini berlaku untuk jumlah argumen apa pun. Setiap tingkat menangkap satu argumen dalam lingkup tertutup sampai nilai akhir dihasilkan.

const clamp = (min: number) => (max: number) => (x: number) =>
  Math.min(Math.max(x, min), max);
const toByte = clamp(0)(255);
console.log(toByte(300), toByte(-5)); // 255 0

Sangat Cocok untuk map dan filter

Fungsi kariying dapat ditempatkan dengan rapi ke dalam metode larik karena map mengharapkan fungsi dengan satu argumen. Penerapan parsial menghasilkan fungsi yang tepat seperti itu.

const mul = (a: number) => (b: number) => a * b;
const triple = mul(3);
console.log([1, 2, 3].map(triple)); // [3, 6, 9]

Pembantu Kariying Generik

Anda dapat menulis pembantu bertipe yang mengubah fungsi dengan dua argumen menjadi fungsi kariying. Generik menjaga tipe parameter dan keluaran tetap tepat.

function curry2<A, B, R>(f: (a: A, b: B) => R) {
  return (a: A) => (b: B) => f(a, b);
}
const join = curry2((a: string, b: string) => a + b);
console.log(join("foo")("bar")); // foobar

Penutupan Menangkap Argumen

Kariying bekerja karena setiap fungsi yang dikembalikan menangkap argumen sebelumnya. Nilai-nilai tersebut tetap tersedia sampai panggilan terakhir menggunakannya.

const greet = (greeting: string) => (name: string) =>
  greeting + ", " + name;
const hi = greet("Hi");
console.log(hi("Sam")); // Hi, Sam

Kapan Tidak Menggunakan Kariying

Mengubah setiap fungsi menjadi fungsi kariying dapat mengurangi keterbacaan. Gunakan ketika penerapan parsial benar-benar berguna, misalnya untuk mengonfigurasi pembantu yang dapat digunakan kembali atau menyusun alur pemrosesan.

Kariying vs Argumen Bawaan

Parameter bawaan menyediakan nilai bawaan, tetapi bukan penerapan bertahap. Kariying memberikan penerapan parsial yang sebenarnya dengan mengembalikan fungsi nyata yang dapat Anda teruskan dan gunakan kembali.

Pemeriksaan Singkat

Pemeriksaan singkat tentang pelajaran ini.

Ringkasan

Pengubahan fungsi bertahap mengubah f(a, b) menjadi f(a)(b), yaitu rangkaian fungsi satu argumen yang ditulis sebagai panah bertingkat. Penerapan sebagian kemudian menetapkan argumen awal untuk membangun fungsi khusus yang dapat digunakan kembali, dengan dukungan penutupan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Currying dan Penerapan Parsial” gratis?

Ya — teks lengkap “Currying dan Penerapan Parsial” 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 “Currying dan Penerapan Parsial”?

Ubah fungsi dengan banyak argumen menjadi bentuk curried. 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 2 dari 4.

Berapa lama pelajaran “Currying dan Penerapan Parsial” 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. Fungsi Murni dan Imutabilitas
  2. Currying dan Penerapan Parsial
  3. Komposisi Fungsi dengan Jenis
  4. Utilitas pipe dan flow Bertipe
← Kembali ke TypeScript Academy