Elemen rest tuple, tipe curry
Gunakan elemen rest tuple untuk menangkap daftar argumen arbitrer dan buat pembantu curry kecil dengan inferensi tipe.
Elemen rest tuple, tipe curry adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. 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 3 pelajaran total.
Pengantar
Tujuan: Tangkap daftar argumen dengan tuple variadik dan tulis pembantu curry yang kecil tetapi berguna. Dengan begitu, API Anda tetap fleksibel dan keamanan tipe tetap terjaga.
Dasar-Dasar Tuple Variadik
Pola [...A, L]: pertama argumen kepala (tuple A), lalu argumen terakhir (L). Pola ini menjadi dasar bagi berbagai pembantu.
type HeadTail<A extends any[], L> = [...A, L]
function callWithLast<A extends any[], L, R>(fn: (...args: [...A, L]) => R, last: L, ...head: A): R {
return fn(...head, last)
}
// Example
function join3(a: string, b: number, c: boolean) { return `${a}-${b}-${c}` }
const r = callWithLast(join3, true, "x", 42) // ok → stringPembantu Curry
Curry sederhana: Berkat [...A, L], tipe kepala dan tipe terakhir sama-sama benar.
function curryLast<A extends any[], L, R>(fn: (...args: [...A, L]) => R) {
return (last: L) => (...head: A) => fn(...head, last)
}
const curried = curryLast(join3)
const out = curried(true)("x", 42) // stringcurryFromFn Umum
Solusi umum: Simpulkan bagian ekor dan bagian terakhir dari Parameters<F>, sehingga jumlah parameter dan tipenya tetap terjaga.
type Fn = (...args: any[]) => any
type Tail<T extends any[]> = T extends [...infer H, any] ? H : never
type Last<T extends any[]> = T extends [...any[], infer L] ? L : never
function curryFromFn<F extends Fn>(fn: F) {
type A = Tail<Parameters<F>>
type L = Last<Parameters<F>>
return (last: L) => (...head: A) => fn(...head, last)
}
const cur = curryFromFn(join3)
const o2 = cur(true)("x", 42) // still stringMerangkai dengan Tuple
Alirkan A → B → C dengan compose: argumen tuple A dipertahankan, dan tipe keluaran dirangkai.
function compose<A extends any[], B, C>(g: (b: B) => C, f: (...args: A) => B) {
return (...args: A): C => g(f(...args))
}
function len(a: string, b: number) { return `${a}${b}`.length }
function isEven(n: number) { return n % 2 === 0 }
const comp = compose(isEven, len)
const ok = comp("id", 99) // booleanKiat
Kiat:
Tuple variadik memerlukan TS 4.0+; selalu gunakan sasaran yang terbaru.
Beri petunjuk kepada kompiler: terkadang Anda dapat meningkatkan penyimpulan dengan menuliskan parameter tipe secara eksplisit.
Terlalu berambisi menambah kerumitan pada rancangan API; pembantu sederhana paling efektif.
Pemeriksaan Tanda Tangan Curry
Pemeriksaan singkat: Tanda tangan mana yang menangkap sembarang argumen A dan argumen terakhir L untuk pembantu curry?
Ringkasan
Ringkasan: Modelkan daftar argumen dengan [...A, L]; tulis pembantu curry dan compose yang kecil; tipe dipertahankan secara otomatis.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Elemen rest tuple, tipe curry” gratis?
Ya — teks lengkap “Elemen rest tuple, tipe curry” 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 3 pelajaran total.
Apa yang akan aku pelajari di “Elemen rest tuple, tipe curry”?
Gunakan elemen rest tuple untuk menangkap daftar argumen arbitrer dan buat pembantu curry kecil dengan inferensi tipe. 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 1 dari 3.
Berapa lama pelajaran “Elemen rest tuple, tipe curry” 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
- Elemen rest tuple, tipe curry
- Menyusun fungsi dan argumen dengan aman
- Builder bertipe kuat