0Pricing
TypeScript Academy · Ders

Değişken Sayıda Bağımsız Değişken Alan İşlevlerin Türünü Belirleme

Değişken uzunluklu demet türleriyle esnek API'ler oluşturun.

Değişken Sayıda Bağımsız Değişken Alan İşlevlerin Türünü Belirleme, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 4. 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 4 dersten oluşur.

Genel Türlü Değişken Sayılı İşlevler

Değişken sayılı demet türleri, genel türlerin bağımsız değişken listelerini yakalayıp işlemesini sağlar. Bu sayede demetleri birleştiren, parametreleri ileten ve çağrı imzalarını tam tür güvenliğiyle yeniden şekillendiren yardımcı araçlar oluşturabilirsiniz.

Bağımsız Değişkenleri Demet Olarak Yakalama

unknown[] ile sınırlandırılmış bir genel tür, tüm bağımsız değişken listesini T demet türü olarak yakalayabilir ve her parametrenin türünü ve konumunu koruyabilir.

function tuple<T extends unknown[]>(...args: T): T {
  return args
}
const t = tuple("a", 1, true) // type [string, number, boolean]
console.log(t)

Genel Demeti Yayma

Yakalanmış bir genel demeti başka bir parametre listesine yayabilirsiniz. Böylece bağımsız değişkenleri iletirken tam türlerini korursunuz.

function wrap<T extends unknown[]>(fn: (...args: T) => void) {
  return (...args: T) => fn(...args)
}
const log = wrap((n: number, s: string) => console.log(n, s))
log(1, "hi")

İki Demeti Birleştirme

Değişken sayılı demet türleri, demetleri birleştirirken büyük avantaj sağlar. Dönüş türünde iki genel demetin yayılması, bunların birleştirilmesini üretir.

function concat<A extends unknown[], B extends unknown[]>(a: A, b: B): [...A, ...B] {
  return [...a, ...b]
}
const r = concat([1, 2], ["a"]) // [number, number, string]
console.log(r)

Sonuç Türü Neden Kesindir

[...A, ...B] genel demetleri yaydığı için sonuç, yalnızca genişletilmiş bir birleşim dizisi olmak yerine her öğenin türünü ve sırasını korur.

function concat<A extends unknown[], B extends unknown[]>(a: A, b: B): [...A, ...B] {
  return [...a, ...b]
}
const r = concat([true], [42])
const flag: boolean = r[0]
const num: number = r[1]
console.log(flag, num)

Başa Bir Bağımsız Değişken Ekleme

Değişken sayılı demetler, parametre listelerini yeniden şekillendirmenizi sağlar; örneğin bir geri çağırma işlevinin imzasına başa bir bağımsız değişken ekleyen bir işlev oluşturabilirsiniz.

function withId<T extends unknown[]>(fn: (...args: T) => void) {
  return (id: number, ...rest: T) => {
    console.log("id", id)
    fn(...rest)
  }
}
const f = withId((msg: string) => console.log(msg))
f(7, "hello")

Baş Türünü Çıkarma

Bir demet parametresiyle, etiketli bir demet kullanarak ilk öğenin türünü ve geri kalanını ayırabilir, ardından her bölüm üzerinde işlem yapabilirsiniz.

function head<H, T extends unknown[]>(...args: [H, ...T]): H {
  return args[0]
}
const h = head("first", 2, 3) // type string
console.log(h)

Parameters Yardımcı Türü

Yerleşik Parameters<F>, bir işlevin bağımsız değişken listesini demet olarak çıkarır; kendisi de değişken sayılı demet türleri üzerine kuruludur. Bir imzanın parametrelerini başka yerlerde yeniden kullanabilirsiniz.

function greet(name: string, age: number) {}
type GreetArgs = Parameters<typeof greet> // [string, number]
const args: GreetArgs = ["Ada", 36]
console.log(args)

Parameters ile İletme

Bağımsız değişkenleri aynı türlendirmeyle mevcut bir işleve ileten bir sarmalayıcı oluşturmak için Parameters ile kalan yayma işlemini birleştirin.

function add(a: number, b: number) { return a + b }
function traced(...args: Parameters<typeof add>): number {
  console.log("calling add", args)
  return add(...args)
}
console.log(traced(2, 3))

Curry Benzeri Bir İmza Oluşturma

Değişken sayılı demetler, kısmi uygulama yardımcılarını mümkün kılar: bazı bağımsız değişkenleri şimdi yakalar, geri kalanını daha sonra beklersiniz ve tümü tür denetiminden geçer.

function partial<A extends unknown[], B extends unknown[], R>(
  fn: (...args: [...A, ...B]) => R,
  ...a: A
) {
  return (...b: B) => fn(...a, ...b)
}
const addThree = (x: number, y: number, z: number) => x + y + z
const add5 = partial(addThree, 5)
console.log(add5(2, 3)) // 10

Güç ve Dikkat

Değişken sayılı genel demetler, işlevleri kesin biçimde şekillendirmek için yeniden kullanılabilir araçlar sunar: sarmalayıcılar, ileticiler ve birleştiriciler. İleri düzeydedirler; bu nedenle onları yalnızca tür kesinliği gerçekten yarar sağladığında kullanın.

function pipe2<A extends unknown[], B, C>(
  f: (...a: A) => B,
  g: (b: B) => C
) {
  return (...a: A) => g(f(...a))
}
const fn = pipe2((n: number) => n * 2, (n) => n + 1)
console.log(fn(5)) // 11

Hızlı Kontrol

Değişken sayılı genel demetleri ne kadar anladığınızı sınayın.

Özet

Değişken sayılı demet türleri, genel türlerin bağımsız değişken listelerini demet olarak yakalamasını ve bunları parametre veya dönüş konumlarında yaymasını sağlar. Bu, demet birleştirmeyi ([...A, ...B]), bağımsız değişken iletmeyi, baş ve kuyruk ayırmayı ve kısmi uygulamayı mümkün kılar; tüm bunlar tam öğe türleri korunarak yapılır. Parameters<F> gibi yerleşik türler de aynı mekanizmaya dayanır. Bu araçları, kesin işlev yapısı türlendirmesinin getirdiği karmaşıklığa değdiği durumlarda kullanın.

Sıkça Sorulan Sorular

“Değişken Sayıda Bağımsız Değişken Alan İşlevlerin Türünü Belirleme” dersi ücretsiz mi?

Evet — “Değişken Sayıda Bağımsız Değişken Alan İşlevlerin Türünü Belirleme” 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 4 dersten oluşur.

“Değişken Sayıda Bağımsız Değişken Alan İşlevlerin Türünü Belirleme” dersinde ne öğreneceğim?

Değişken uzunluklu demet türleriyle esnek API'ler oluşturun. 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, 4 dersinin 4. dersidir.

“Değişken Sayıda Bağımsız Değişken Alan İşlevlerin Türünü Belirleme” 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. İşlevlerde Rest Parametreleri
  2. Dizilerde ve Nesnelerde Yayma
  3. Demet Rest Ögeleri
  4. Değişken Sayıda Bağımsız Değişken Alan İşlevlerin Türünü Belirleme
← TypeScript Academy Sayfasına Dön