Anasayfa » 4. TypeScript’de Diziler

4. TypeScript’de Diziler

by Levent KARAGÖL
5 dakikalık okuma süresi

Bu makalemizde, TypeScript’de diziler konusunu işleyecek, temel ve alternatif söz dizimleri ile dizi tanımlamayı görecek, salt okunur dizi kavramına göz atacak ve çok boyutlu dizileri inceleyeceğiz.



Temel Dizi Tanımı

TypeScript’de dizi tanımlamak için en sık kullanılan yöntem, tip tanımının hemen arkasından gelen “[]” işareti vasıtasıyla gerçekleştirilen tanımlama şeklidir. Hızlı bir örnek üzerinden dizi tanımlamalarına göz gezdirelim.

// Temel tipler üzerinden dizi tanımlamaları
let array1: number[] = [1, 2, 3, 4, 5];
let array2: string[] = ["a", "b", "c", "d", "e"];
let array3: boolean[] = [true, false, true, false, true];

// Diziye geçerli elemanlar ekleme
array1.push(6);
array2.push("f");
array3.push(false);

// Aşağıdaki ifadeler ise tip uyumsuzluğu sebebiyle derleme sırasında hataya sebep olur
array1.push("test");
array2.push(7);
array3.push("test");

Örnekte görüldüğü üzere, JavaScript’ten farklı olarak dizilerin eleman tiplerini belirli kurallar çerçevesine oturtarak, kurala uymayan durumlarda derleme sırasında hata verilmesine sebep olabiliyoruz.

TypeScript’de Tipler makalemizin “Çoklu Tip Tanımı” başlığı altında değindiğimiz gibi, dizilerde de birden fazla tipin kullanılmasına izin verebiliriz. Aşağıda konu hakkında örnek bir uygulama bulunmaktadır.

// Çift tipte değer kabul eden dizi tanımı
let array1: (number | string)[] = [1, "a", 2, "b", 3];

// Her iki tipte de eleman eklememize izin verilir
array1.push("c");
array1.push(4);

// Tanımlı tipler haricindeki eleman ekleme işlemleri derleme sırasında hataya sebep olur
array1.push(true);

Farklı bir yöntem olarak dizi tipi için “any” kullanılarak, tip denetimi devre dışı bırakılabilir ama elbette bu yöntem TypeScript kullanmanın avantajlarını da kullanamamamıza sebep olacaktır.


Alternatif Sözdizimi

Bir önceki başlıkta anlatılan tanımlama tarzına alternatif olarak Generic tanımlama yöntemi de kullanılabilir. Aşağıda alternatif sözdizimi ile tekli ve çoklu tipe sahip dizi tanımlamasına örnek verilmiştir.

// Alternatif sözdizimi ile  dizi tanımlamaları
let array1: Array<number> = [1, 2, 3, 4, 5];
let array2: Array<string | boolean> = ["a", true, "b", false, "c"];

// Diziye geçerli elemanlar ekleme
array1.push(6);
array2.push(true);

// Aşağıdaki ifadeler ise tip uyumsuzluğu sebebiyle derleme sırasında hataya sebep olur
array1.push("test");
array2.push(7);

İki yöntem arasında bir avantaj bulunmamakla birlikte, serinin ilerideki makalelerinde anlatılacak olan Generic fonksiyonlarla birlikte kullanılması durumunda, bu yöntemle ihtiyaç anına özel tipte dizi tanımlanması mümkün olabilir.


Salt-Okunur Diziler

TypeScript’de Özel Tip Tanımı makalemizin “Salt-Okunur Tipler” başlığı altında değindiğimiz gibi, dizilerde de salt-okunur tanımlama yapılması mümkündür. Aşağıda, “readonly” ifadesi ile gerçekleştirdiğimiz salt-okunur dizi tanımına ait bir örnek bulunmaktadır.

// readonly ifadesi ile salt-okunur dizi tanımlanır ve ilk değerler atanır
let array1: readonly number[] = [1, 2, 3, 4, 5];

// Dizideki elemanların değerlerine ulaşılabilir
const value = array1[3];

// Ancak diziye yeni değer eklemek, değiştirmeye veya silmeye çalışmak derleme sırasında hataya sebep olur
array1.push(6);
array1[2] = 7;
array1.pop();
array1.splice(0, 1);


Çok Boyutlu Diziler

TypeScript’de daha önceden JavaScript’te yaptığımız gibi birden fazla boyutlu dizi tanımlayabilir ve bunlara tip kuralları getirebiliriz. Aşağıda iki ve üç boyutlu dizi tanımlamasına örnekler verilmiştir.

// İki ve üç boyutlu dizi tanımları
let twoDimensionalArray: number[][] = [
                                          [1, 2, 3],
                                          [4, 5, 6],
                                          [7, 8, 9]
                                      ];

let threeDimensionalArray: (string | number)[][][] = [
                                                        [["a", "b", 1], ["c", "d", 2], ["e", "f", 3]],
                                                        [[4, 5, "g"], ["h", 6, "i"], ["j", "k", "l"]],
                                                        [[7, 8, 9], [10, "m", "n"], ["o", 11, "p"]]
                                                     ];

// Dizilerden değer okuma ve değer yazma
const value1 = twoDimensionalArray[1][2];
threeDimensionalArray[0][1][2] = 15;


Böylece TypeScript ile diziler konusunun sonuna geldik. Bir sonraki makalemizde TypeScript’de enum kullanımı konusuna geçeceğiz.

Herkese iyi çalışmalar…

İLGİNİZİ ÇEKEBİLİR

Bir Yorum Yaz