Demetlerde rest öğeleri, curry türleri
Her sayıda bağımsız değişken listesini yakalamak ve tür çıkarımıyla küçük curry yardımcıları oluşturmak için demet rest öğelerini kullanın.
Demetlerde rest öğeleri, curry türleri, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 3 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 3 dersten oluşur.
Giriş
Amaç: Değişken uzunluklu demetlerle bağımsız değişken listelerini yakalayın ve küçük ama kullanışlı bir kürleme yardımcısı yazın. Bu sayede uygulama programlama arayüzleriniz esnek kalır, tür güvenliği korunur.
Değişken uzunluklu demetlerin temelleri
[...A, L] örüntüsü: önce baş bağımsız değişkenleri (A demeti), ardından son bağımsız değişkeni (L) alır. Yardımcıların temelini oluşturur.
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 → stringKürleme yardımcısı
Basit bir kürleme: [...A, L] sayesinde hem baş türleri hem de son tür doğru olur.
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) // stringGenel curryFromFn
Genel çözüm: Parameters<F> içinden kalan ve son türleri çıkarın; böylece parametre sayısı ile türleri korunur.
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 stringDemetlerle birleştirme
Birleştirmeyle A → B → C akışı kurun: A demetindeki bağımsız değişkenler korunur, çıktı türleri zincirlenir.
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) // booleanİpuçları
İpuçları:
Değişken uzunluklu demetler TS 4.0 veya daha yeni bir sürüm gerektirir; hedefi güncel tutun.
Derleyiciye ipucu verin: Tür parametrelerini açıkça yazarak çıkarımı bazen iyileştirebilirsiniz.
Aşırı meraklılık uygulama programlama arayüzü tasarımına karmaşıklık katar; basit yardımcılar en etkilidir.
Kürleme imzası kontrolü
Hızlı kontrol: Bir kürleme yardımcısı için A türündeki any bağımsız değişkenlerini ve son bağımsız değişken L'yi hangi imza yakalar?
Özet
Özet: Bağımsız değişken listelerini [...A, L] ile modelleyin; küçük kürleme ve birleştirme yardımcıları yazın; türler otomatik olarak korunur.
Sıkça Sorulan Sorular
“Demetlerde rest öğeleri, curry türleri” dersi ücretsiz mi?
Evet — “Demetlerde rest öğeleri, curry türleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 3 dersten oluşur.
“Demetlerde rest öğeleri, curry türleri” dersinde ne öğreneceğim?
Her sayıda bağımsız değişken listesini yakalamak ve tür çıkarımıyla küçük curry yardımcıları oluşturmak için demet rest öğelerini kullanın. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 1. dersidir.
“Demetlerde rest öğeleri, curry türleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Demetlerde rest öğeleri, curry türleri
- Fonksiyonları ve bağımsız değişkenleri güvenle birleştirme
- Güçlü türlere sahip oluşturucular