CodeBlanks Logo Icon CodeBlanks

Tuple inference

Generic'lerde tuple çıkarımını öğrenirsin.

Tuple inference nedir?

Tuple inference, generic fonksiyon çağrısında geçirilen argümanlardan tuple türünün çıkarılmasıdır. function f<T extends unknown[]>(...args: T): T tanımında T, çağrıdaki parametrelerin sıralı türlerinden oluşan tuple olarak belirlenir. Bu, Rest parametrelerle tür güvenli tuple dönüşü sağlar.

function f<T extends unknown[]>(...args: T): T {
  return args;
}
f(1, "a", true);  // [number, string, boolean]

Rest parametrelerle tuple dönüşü

Bir fonksiyon rest parametrelerini tuple olarak döndürdüğünde, dönüş türü çağrıdaki argümanların tür sırasını korur. Bu, normal dizi dönüşünden farklı olarak eleman türlerini ve sırasını sabit tutar. Böylece f(1, "a") çağrısı [number, string] döner.

Uygulama Tuple döndüren fonksiyon

dondur adında generic bir fonksiyon tanımla: <T extends unknown[]>(...args: T): T. Gövdesi return args olsun. dondur(1, "a", true) çağrısı sonucunu sonuc değişkenine ata. sonuc[0] değerini console.log ile yazdır.

Başlangıç kodu

index.ts
// dondur adinda generic fonksiyon tanimla
// rest parametre ile T tuple olarak cikarilsin
// fonksiyon kendisini geri döndürsün
// cagriyi sonuc'a ata
// sonuc[0] yazdir

Örnek çözüm

index.ts
function dondur<T extends unknown[]>(...args: T): T {
  return args;
}
const sonuc = dondur(1, "a", true);
console.log(sonuc[0]);

Beklenen çıktı

1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 function f<T extends unknown[]>(...args: T): T çağrısı f(1, "a") ile T ne olur?

  • unknown[]
  • [number, string] Doğru cevap
  • (number | string)[]
  • any[]

Açıklama: Rest parametrelerle çağrıdaki argümanların sıralı türleri tuple olarak çıkarılır; bu yüzden T [number, string] olur, union dizisi değil.

2 Rest parametre bildirimi

Soru
function f<T extends unknown[]>(____ args: T): T {
  return args;
}
Cevap
function f<T extends unknown[]>(... args: T): T {
  return args;
}

Açıklama: Rest parametreler ... öneki ile bildirilir; bu, değişken sayıda argümanı tek bir dizi olarak toplar.

3 Tuple inference kavramları

Kavram Anlamı
...args Rest parametre
T extends unknown[] Tuple kısıtı
[number, string] Çıkarılan tuple türü
inference Tür çıkarımı

İleri seviye bölümündeki tüm dersler