Demet Uzunluğuyla Sayma
Sayıları türlerde demet uzunlukları olarak temsil edin.
Demet Uzunluğuyla Sayma, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 1. 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ın Bir Gösterime İhtiyacı Var
Tür sistemi, sayısal değişmezleri doğrudan toplayamaz. Klasik çözüm, N sayısını N öğeli bir demet olarak göstermektir. İçeriğin önemi yoktur; önemli olan yalnızca uzunluktur.
type Three = [unknown, unknown, unknown];
type N = Three["length"]; // 3Okuma Uzunluğu
Her demet türünde length özelliği bir sayısal sabit türüdür. ["length"] ile dizinleme yapıldığında bu özellik, kullanabileceğiniz bir sayı olarak okunur.
type A = [1, 2, 3, 4]["length"]; // 4
type B = []["length"]; // 0
type C = ["x"]["length"]; // 1unknown Yer Tutucusu Neden Kullanılır
Öğe türü olarak unknown kullanırız; çünkü değerler önemsizdir, yalnızca sayı önemlidir. Her tür işe yarar, ancak unknown değeri "yer tutucu" olduğunu açıkça belirtir.
type Two = [unknown, unknown];
type N = Two["length"]; // 2N Uzunluğunda Demet Oluşturma
Diğer yönde ilerlemek için özyineleme kullanarak hedef uzunlukta bir demet oluşturun. Uzunluk N ile eşleşene kadar öğeler ekleyin, ardından demeti döndürün. Bu, ünlü BuildTuple yardımcı türüdür.
type BuildTuple<N extends number, Acc extends unknown[] = []> =
Acc["length"] extends N ? Acc : BuildTuple<N, [...Acc, unknown]>;
type A = BuildTuple<3>; // [unknown, unknown, unknown]BuildTuple Nasıl Döngü Kurar
BuildTuple<3> adımlarını izleyin:
- Biriktirici uzunluğu 0, 3 değil; bir tane ekle
- Biriktirici uzunluğu 1, 3 değil; bir tane ekle
- Biriktirici uzunluğu 2, 3 değil; bir tane ekle
- Biriktirici uzunluğu 3, 3'e eşit; döndür
Biriktirici uzunluğu döngü sayacıdır.
type A = BuildTuple<2>; // [unknown, unknown]Uzunluk Köprüdür
Sayılar ve demetler arasında geçiş yapmanızı sağlayan iki işlem vardır:
- Sayıdan demete:
BuildTuple<N> - Demetten sayıya:
T["length"]
Tüm tür aritmetiği bu köprüyü geçmeye dayanır.
type FromN = BuildTuple<4>; // tuple of length 4
type BackToN = FromN["length"]; // 4Uzunluğa Göre Karşılaştırma
Demet uzunluğu bir sabit olduğundan, sayıların eşitliğini denetleyebilirsiniz. Demetler oluşturun ve atanabilirlik yoluyla uzunluklarını karşılaştırın.
type SameLength<A extends unknown[], B extends unknown[]> =
A["length"] extends B["length"] ? true : false;
type X = SameLength<[1, 2], ["a", "b"]>; // true
type Y = SameLength<[1], ["a", "b"]>; // falseGenel Bir Uzunluk Sayacı
Nasıl çalıştığını anlamak için length özelliğini özyineleme yoluyla yeniden uygulayabilirsiniz; ancak ["length"] okumak daha hızlıdır. Bu, saymanın yalnızca bir demet üzerinde ilerlemek olduğunu gösterir.
type Len<T extends unknown[], Acc extends unknown[] = []> =
T extends [unknown, ...infer R]
? Len<R, [...Acc, unknown]>
: Acc["length"];
type A = Len<["a", "b", "c"]>; // 3Sayaç Olarak Demetler
Demeti bir çetele olarak düşünün: her öğe bir işarettir. Bir öğe eklemek sayacı artırır; bir öğe çıkarmak azaltır. Bu zihinsel model, aritmetiği sezgisel hâle getirir.
type Inc<N extends number> = [...BuildTuple<N>, unknown]["length"];
type A = Inc<3>; // 4Azaltmaya Ön Bakış
Azaltma işlemi N için demeti oluşturur, ardından son öğe dışındaki her şeyi çıkarır ve daha kısa uzunluğu okur. Bunu bir sonraki derste biçimsel hâle getireceksiniz.
type Dec<N extends number> =
BuildTuple<N> extends [unknown, ...infer R] ? R["length"] : 0;
type A = Dec<3>; // 2
type B = Dec<0>; // 0Hatırlanması Gereken Sınırlar
Bu teknik küçük, negatif olmayan tam sayılar için çalışır. Çok büyük N değerleri özyineleme sınırlarına takılır; negatif sayılar veya ondalık sayılar için yerleşik bir destek yoktur. Bu sınırlar içinde güvenilir ve tamamen statiktir.
type A = BuildTuple<5>["length"]; // 5 (fine)
// BuildTuple<10000> would error: too deepKısa Sınama
Demet uzunluğuyla sayma konusundaki anlayışınızı sınayın.
Özet
Sayma, tür düzeyinde matematiğin temelidir.
Ndeğerini uzunluğuNolan bir demet olarak temsil edin.- Sayıyı
T["length"]ile okuyun. BuildTuple<N>, sayıdan demete geçer.- Yalnızca küçük, negatif olmayan tam sayılar için çalışır.
Sırada: gerçek toplama ve çıkarma.
Sıkça Sorulan Sorular
“Demet Uzunluğuyla Sayma” dersi ücretsiz mi?
Evet — “Demet Uzunluğuyla Sayma” 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.
“Demet Uzunluğuyla Sayma” dersinde ne öğreneceğim?
Sayıları türlerde demet uzunlukları olarak temsil edin. 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 1. dersidir.
“Demet Uzunluğuyla Sayma” 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ı