CodeBlanks Logo Icon CodeBlanks

Çoklu tür parametresi

Birden fazla tür parametresi almayı öğrenirsin.

Birden fazla tür parametresi

Bir generic, birden fazla tür parametresi alabilir. Türler virgülle ayrılır: <T, U>. Her parametre bağımsızdır ve imzada istenilen yerde kullanılabilir. Sıra önemlidir; çağrıda türler aynı sırada verilir.

function cevir<T, U>(x: T, y: U): [U, T] {
  return [y, x];
}
const r = cevir<number, string>(1, "a");
// r: [string, number]

Anahtar-değer yapıları

Çoklu tür parametresi özellikle anahtar-değer yapılarında işe yarar. Bir Map<K, V>, K anahtarını V değerine eşler. Kendi Cift<K, V> sınıfını yazarak farklı türlerden iki değeri tür güvenli şekilde birlikte tutabilirsin.

Uygulama Anahtar-değer çifti

Cift<K, V> generic sınıfını yaz. Sınıfta private anahtar: K ve deger: V alanları olsun; constructor bu değerleri alsın ve alanlara atasın. al(): [K, V] metodu [this.anahtar, this.deger] döndürsün. Sonra Cift<string, number> örneği oluştur ("yas" ve 25) ve al() sonucunu yazdır.

Başlangıç kodu

index.ts
// Cift<K, V> sınıfını yaz
// private anahtar: K ve private deger: V alanları tanımla
// constructor bu değerleri alıp alanlara atasın
// al metodu [this.anahtar, this.deger] döndürsün
// Cift<string, number> örneği oluştur, al() yazdır

Örnek çözüm

index.ts
class Cift<K, V> {
  private anahtar: K;
  private deger: V;
  constructor(anahtar: K, deger: V) {
    this.anahtar = anahtar;
    this.deger = deger;
  }
  al(): [K, V] {
    return [this.anahtar, this.deger];
  }
}
const c = new Cift<string, number>("yas", 25);
console.log(c.al());

Beklenen çıktı

[ 'yas', 25 ]

Soru ve cevaplar

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

1 İki tür parametresi alan bir generic nasıl bildirilir?

  • Noktalı virgülle ayrılmış iki harf, açılı parantez içinde
  • Boşlukla ayrılmış iki harf, açılı parantez içinde
  • Açılı parantez içinde, virgülle ayrılmış iki harf Doğru cevap
  • Köşeli parantez içinde, virgülle ayrılmış iki harf

Açıklama: Tür parametreleri açılı parantez içinde virgülle ayrılarak yazılır.

2 İkinci tür parametresi

Soru
function esle<A, B>(a: A, b: ____): [A, B] { return [a, b]; }
Cevap
function esle<A, B>(a: A, b: B): [A, B] { return [a, b]; }

Açıklama: İkinci parametre B türünde olmalıdır; bu yüzden tür annotation olarak B yazılır. A yanlış tür, T tanımsız, string ise sabit bir türdür.

3 Çoklu tür parametresi parçaları

Kavram Anlamı
<T, U> İki tür parametresi
<K, V> Anahtar-değer için tür parametreleri
[U, T] Tür sırasını tersine çevirme
cevir<number, string> Açık iki tür argümanı

Orta seviye bölümündeki tüm dersler