0Pricing
TypeScript Academy · Ders

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 → string

Kü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) // string

Genel 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 string

Demetlerle 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

  1. Demetlerde rest öğeleri, curry türleri
  2. Fonksiyonları ve bağımsız değişkenleri güvenle birleştirme
  3. Güçlü türlere sahip oluşturucular
← TypeScript Academy Sayfasına Dön