CodeBlanks Logo Icon CodeBlanks

Recursive type nedir?

Kendini referans alan türleri öğrenirsin.

Recursive type nedir?

Bir recursive (özyinelemeli) type, tanımında kendine başvuran türdür. Bağlı liste, ağaç ve iç içe yapılar bu şekilde tanımlanır. Bir alan aynı türden bir değere işaret eder; bu sayede sınırsız derinlikte veri modellenebilir. Alan opsiyonel (?) yapılarak zincir sonlandırılabilir.

type BagliListe<T> = {
  deger: T;
  sonraki?: BagliListe<T>;
};

Opsiyonel alanlarla sonlandırma

Recursive type'larda kendine başvuran alan opsiyonel (?) yapılır; böylece zincir bir noktada bitebilir. Örneğin sonraki?: BagliListe<T> ifadesinde sonraki yoksa liste sonlanmış demektir. Bu, sonsuz döngüye düşmeden sonlu veriyi modellemeyi sağlar.

Uygulama Bağlı liste nesnesi oluştur

BagliListe adında bir recursive generic type tanımla: <T> = { deger: T; sonraki?: BagliListe<T> }. liste değişkeni BagliListe<number> türünde ve değeri { deger: 1, sonraki: { deger: 2 } } olsun. liste.deger değerini console.log ile yazdır.

Başlangıç kodu

index.ts
// BagliListe adinda recursive generic type tanimla
// deger ve opsiyonel sonraki alanlari olsun
// liste nesnesini number degerlerle tanimla
// liste.deger yazdir

Örnek çözüm

index.ts
type BagliListe<T> = {
  deger: T;
  sonraki?: BagliListe<T>;
};
const liste: BagliListe<number> = { deger: 1, sonraki: { deger: 2 } };
console.log(liste.deger);

Beklenen çıktı

1

Soru ve cevaplar

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

1 Bir recursive type'ın temel özelliği nedir?

  • Yalnızca primitif türleri içerir
  • Çalışma zamanında değişir
  • Generic parametre alamaz
  • Tanımında kendine başvurur Doğru cevap

Açıklama: Recursive type, tanımında kendi adına başvurur; böylece iç içe sonsuz derinlikte veri modellenebilir.

2 Kendine başvuru

Soru
type BagliListe<T> = {
  deger: T;
  sonraki?: ____<T>;
};
Cevap
type BagliListe<T> = {
  deger: T;
  sonraki?: BagliListe<T>;
};

Açıklama: Recursive type kendine başvurur; sonraki alanı yine BagliListe<T> türünden olmalıdır.

3 Recursive type kavramları

Kavram Anlamı
deger Düğüm değeri
sonraki? Opsiyonel sonraki düğüm
BagliListe<T> Kendine başvuran tür
T Düğüm değerinin türü

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