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>; // falseKüçü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>; // falseDesen 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>; // trueKüçü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>; // falseBü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.LessThanbağımsız değişkenleri ters çevirir;Gteeşitliği ekler.- Küçük sabit sayılarla çalışır, geniş
numbertü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
- Demet Uzunluğuyla Sayma
- Tür Düzeyinde Toplama ve Çıkarma
- Tür Düzeyi Karşılaştırmalar
- Uygulamalı Sayısal Tür Yardımcıları