0Pricing
TypeScript Academy · Ders

Tür Düzeyi Karşılaştırmalar

Sayıları tamamen tür düzeyinde karşılaştırın.

Tür Düzeyi Karşılaştırmalar, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 3. 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.

Sayıları Karşılaştırma

Sayısal sabit türlerini karşılaştırmak için yine demetlerden yararlanırsınız. Fikir şudur: iki sayıyı aynı adımlarla küçültün ve hangisinin önce sıfıra ulaştığına bakın. Boş demete ilk ulaşan sayı daha küçüktür.

type BuildTuple<N extends number, Acc extends unknown[] = []> =
  Acc["length"] extends N ? Acc : BuildTuple<N, [...Acc, unknown]>;

Sabitlerin Eşitliği

Sayısal sabitlerin eşitliği karşılıklı atanabilirlik kullanır. İki sabit, her biri diğerini genişlettiğinde eşittir. Demetlerle sarmalamak, birleşim türlerinden kaynaklanan sürprizleri önler.

type NumEquals<A extends number, B extends number> =
  [A] extends [B] ? ([B] extends [A] ? true : false) : false;

type X = NumEquals<3, 3>; // true
type Y = NumEquals<3, 4>; // false

Küçülterek Büyüktür Denetimi

A > B için her iki sayı için de demet oluşturun ve her adımda her birinden bir öğe kaldırın. A hâlâ öğeler içerirken B boşalırsa A daha büyüktür.

type GreaterThan<A extends number, B extends number> =
  BuildTuple<A> extends [...BuildTuple<B>, unknown, ...unknown[]]
    ? true : false;

type X = GreaterThan<5, 3>; // true
type Y = GreaterThan<3, 5>; // false

Desen Nasıl Okunur

[...BuildTuple<B>, unknown, ...unknown[]] deseni şu anlama gelir: uzunluğu B olan bir ön ek ve ardından en az bir öğe daha. A buna uyuyorsa A, B'den daha fazla öğeye sahiptir; dolayısıyla A > B olur.

type A = GreaterThan<4, 4>; // false (no extra element)
type B = GreaterThan<6, 2>; // true

Küçüktür

LessThan, yalnızca GreaterThan türünün bağımsız değişkenleri ters çevrilmiş hâlidir. Yeniden türetmek yerine yeniden kullanın.

type LessThan<A extends number, B extends number> =
  GreaterThan<B, A>;

type X = LessThan<3, 5>; // true
type Y = LessThan<5, 3>; // false

Büyük veya Eşit

Karşılaştırmayı eşitlikle birleştirin. A >= B, A > B veya A == B olduğunda doğrudur.

type Gte<A extends number, B extends number> =
  GreaterThan<A, B> extends true
    ? true
    : NumEquals<A, B>;

type X = Gte<5, 5>; // true
type Y = Gte<3, 5>; // false

Özyinelemeli Karşılaştırma

Başka bir yaklaşım, sayılardan biri sıfıra ulaşana kadar ikisini de azaltarak karşılaştırma yapar. Bu, aynı adımlarla ilerleme fikrini açıkça gösterir: sıfıra ilk ulaşan daha küçüktür.

type Cmp<A extends number, B extends number> =
  A extends 0
    ? (B extends 0 ? "eq" : "lt")
    : B extends 0
      ? "gt"
      : Cmp<Dec<A>, Dec<B>>;

type X = Cmp<3, 5>; // "lt"

Dec Bağımlılığı

Özyinelemeli sürüm, önceki dersteki Dec türüne ihtiyaç duyar. Her adımda her iki taraftan da bir işaret kaldırılır. İkisi de sıfır olduğunda eşittir; yalnızca biri sıfırsa diğeri daha büyüktür.

type Dec<N extends number> =
  BuildTuple<N> extends [unknown, ...infer R] ? R["length"] : 0;

Eşitlik ve Atanabilirlik

Dikkatli olun: number extends number doğrudur, ancak bu sabit eşitliği değildir. Buradaki karşılaştırmalar, geniş number türü yerine 3 ve 5 gibi belirli sabit türlerini varsayar.

type A = NumEquals<3, 3>;          // true
type B = 3 extends number ? 1 : 0; // 1 (assignability, not equality)

Sıralama Anahtarı Oluşturma

Karşılaştırmayla sıralama kurallarını kodlayabilirsiniz. Örneğin, iki sayıdan oluşan bir demetin artan sırada olup olmadığına tür düzeyinde karar verebilirsiniz.

type IsSorted<A extends number, B extends number> =
  GreaterThan<A, B> extends true ? false : true;

type X = IsSorted<2, 5>; // true
type Y = IsSorted<5, 2>; // false

Ölçülü Kullanın

Karşılaştırmalar özyineleme maliyeti getirir. Küçük ve sınırlandırılmış değerleri korumak için harikadırlar (dizinler, sabit sınırlar); ancak genel amaçlı bir sayı kitaplığı değildirler. İşlenenleri küçük tutun ve tam aynı adımlı özyinelemeden daha sığ olan ön ek deseni biçimini tercih edin.

type A = GreaterThan<9, 4>; // true (cheap, prefix pattern)

Kısa Sınama

Tür düzeyinde karşılaştırmalar konusundaki anlayışınızı sınayın.

Özet

Artık tür sisteminde sayıları sıralayabilirsiniz.

  • Sabitlerin karşılıklı atanabilirliği yoluyla eşitlik.
  • GreaterThan, B uzunluğunda bir ön ek ve fazladan bir öğe yoluyla çalışır.
  • LessThan bağımsız değişkenleri ters çevirir; Gte eşitliği ekler.
  • Küçük sabit sayılarla çalışır, geniş number türüyle çalışmaz.

Sırada: tüm bunları pratik yardımcı araçlara dönüştürme.

Sıkça Sorulan Sorular

“Tür Düzeyi Karşılaştırmalar” dersi ücretsiz mi?

Evet — “Tür Düzeyi Karşılaştırmalar” 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.

“Tür Düzeyi Karşılaştırmalar” dersinde ne öğreneceğim?

Sayıları tamamen tür düzeyinde karşılaştırın. 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 3. dersidir.

“Tür Düzeyi Karşılaştırmalar” 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. Demet Uzunluğuyla Sayma
  2. Tür Düzeyinde Toplama ve Çıkarma
  3. Tür Düzeyi Karşılaştırmalar
  4. Uygulamalı Sayısal Tür Yardımcıları
← TypeScript Academy Sayfasına Dön