Ana içeriğe geç
Modül 1 · Ders 2 ders 2Kurstaki 2/14~10 min
Modül dersleri (2/2)

Diziler ve Tuple'lar

JavaScript'te diziler her türlü öğeyi içerebilir ve dinamik olarak büyüyüp küçülebilir. TypeScript, koleksiyonların homojen kalmasını veya sabit bir tür yapısına uymasını sağlamak için statik tür denetimi ekler.


Diziler (Homojen Koleksiyonlar)

TypeScript'te aynı türdeki öğeleri içeren bir dizinin türünü tanımlamanın iki eşdeğer yolu vardır:

  1. Eleman tipini ve ardından köşeli parantezleri ([]) kullanarak:

    TS
    const numbers: number[] = [1, 2, 3];
    const strings: string[] = ['a', 'b', 'c'];
  2. Genel Array<T> türünü kullanarak:

    TS
    const numbers: Array<number> = [1, 2, 3];

Her iki sözdizimi de tamamen geçerlidir, ancak ilki (type[]) geleneksel ve en yaygın stildir. Geçersiz bir değer eklemeye çalışırsanız (örneğin, number[] dizisinde numbers.push("hello")), TypeScript bir derleme zamanı hatası üretecektir.


Demetler (Sabit Uzunluklu Diziler)

Tuple, sabit sayıda öğeye sahip özel bir dizi türüdür; burada her öğe, konumuna bağlı olarak önceden tanımlanmış belirli bir türe sahiptir.

Örneğin, bir durum kodu (sayı) ve bir mesajdan (dize) oluşan bir HTTP yanıtını depolamak için:

TS
const response: [number, string] = [200, 'OK'];

Bu durumda:

  • İlk öğe (response[0]) bir number olmalıdır.
  • İkinci öğe (response[1]) bir string olmalıdır.
  • Dizi tam olarak 2 öğeyle başlatılmalıdır.

Salt Okunur Tuple'lar (readonly)

TypeScript'teki tuple'larla ilgili önemli bir ayrıntı, çalışma zamanında normal JavaScript dizileri olmalarıdır. Bu, .push() veya .pop() gibi değiştirici yöntemlerin teknik olarak mevcut olduğu ve tür kontrollerini kısmen atlayarak demet uzunluğunu değiştirebileceği anlamına gelir.

Bu davranışı önlemek ve gerçek değişmezliği uygulamak için readonly değiştiricisini kullanabiliriz:

TS
const point: readonly [number, number] = [10, 20];
// point.push(30); // Compile-time error!

Kendin dene

Alıştırma 1: Sayı Dizisi

Egzersiz#ts.m1.l2.e1
Denemeler: 0Yükleniyor…

Yalnızca sayıları içeren ve 90, 85 ve 95 değerleriyle başlatılan, puanlar adlı bir dizi bildirin. Dizi için açık tür ek açıklamasını kullanın. Herhangi bir türü kullanmayın.

Düzenleyici yükleniyor…
İpucu göster

Sözdizimi const puanlarını kullanın: sayı[] = ... veya Array&lt;sayı&gt;.

3 denemeden sonra çözüm mevcut

Alıştırma 2: 3B Koordinat Tuple'ı

Egzersiz#ts.m1.l2.e2
Denemeler: 0Yükleniyor…

3 boyutlu bir koordinatı (X, Y, Z için üç sayı) temsil eden ve 10, 20, 30 değerleriyle başlatılan bir demet adlı nokta bildirin. Açık tür açıklaması kullanın.

Düzenleyici yükleniyor…
İpucu göster

Demet türü [sayı, sayı, sayı] olmalıdır.

3 denemeden sonra çözüm mevcut

Alıştırma 3: Konum Bilgisi Tuple'ı

Egzersiz#ts.m1.l2.e3
Denemeler: 0Yükleniyor…

Adıyla birlikte bir coğrafi koordinatı temsil eden,locationInfo adlı bir tanımlama grubu bildirin. Şunları içermelidir: enlem (sayı), boylam (sayı) ve şehir adı (dize). Bunu 41.9028, 12.4964 ve 'Rome' değerleriyle başlatın.

Düzenleyici yükleniyor…
İpucu göster

Üç öğeli bir demet tanımlamak için sözdizimini kullanın: [sayı, sayı, dize].

3 denemeden sonra çözüm mevcut

Alıştırma 4: Günlük Girişi Tuple'ı

Egzersiz#ts.m1.l2.e4
Denemeler: 0Yükleniyor…

Bir günlük satırını temsil eden logEntry adlı bir tanımlama grubu bildirin. Sırayla şunları içermelidir: bir zaman damgası (sayı), bir önem düzeyi (dize) ve bir hata mesajı (dize). Zaman damgası 1716300000, 'BİLGİ' düzeyi ve 'Uygulama başladı' mesajıyla başlatın.

Düzenleyici yükleniyor…
İpucu göster

Üç öğeli bir tanımlama grubu tanımlamak için sözdizimini kullanın: [sayı, dize, dize] ve belirtilen değerleri atayın.

3 denemeden sonra çözüm mevcut