Tuple inference
- TypeScript kursu
- İleri seviye
- Ders 2/57
- 4 dk
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
// 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
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
function f<T extends unknown[]>(____ args: T): T {
return args;
}
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ı |