0Pricing
TypeScript Academy · Ders

readonly Diziler ve Demetler

Dizileri ve demetleri değişiklik yapan yöntemlere karşı koruyun.

readonly Diziler ve Demetler, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 2. 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.

Salt Okunur Diziler

Salt okunur dizi, okuyabileceğiniz ancak değiştiremeyeceğiniz bir dizidir. Bunu readonly number[] veya eşdeğer olarak ReadonlyArray<number> şeklinde yazabilirsiniz. Öğe türü aynı kalır; yalnızca değişiklik yapmak engellenir.

const nums: readonly number[] = [1, 2, 3];
console.log(nums[0], nums.length);
// nums[0] = 9; // Error: index signature is readonly

ReadonlyArray Türü

ReadonlyArray<T>, anlam bakımından readonly T[] ile aynı olan genel biçimdir. Hangisinin okunması daha kolaysa onu kullanın; ikisi de birbirinin yerine kullanılabilir.

const names: ReadonlyArray<string> = ['Ada', 'Sam'];
console.log(names.join(', '));

Değişiklik Yapan Metotlar Yok

Salt okunur dizilerde değişiklik yapan metotlar tamamen bulunmaz. push, pop, splice, sort ve reverse kullanılamaz; türün bunlara sahip olmaması doğrudan tür tanımında belirtilmiştir.

const items: readonly string[] = ['a', 'b'];
// items.push('c'); // Error: push does not exist
// items.splice(0, 1); // Error
console.log(items.length);

Değişiklik Yapmayan Metotlar Hâlâ Çalışır

Değişiklik yapmak yerine yeni bir değer döndüren metotlar — map, filter, concat ve slice — kullanılmaya devam eder. Bunlar yeni diziler oluşturur ve özgün diziyi değiştirmeden bırakır.

const nums: readonly number[] = [1, 2, 3];
const doubled = nums.map((n) => n * 2);
console.log(doubled); // new array, nums unchanged

Parametre Olarak Salt Okunur Diziler

Bir işlevde readonly T[] kabul etmek, çağıranın dizisini değiştirmeyeceğinizi belirtir. Niyeti belgeler ve derleyicinin bu sözü uygulamasını sağlar.

function sum(values: readonly number[]): number {
  return values.reduce((a, b) => a + b, 0);
}
console.log(sum([10, 20, 30]));

Değiştirilebilir Diziler Salt Okunur Dizilere Atanabilir

Normal bir number[], readonly number[] parametresine atanabilir; burada yalnızca onu değiştirmeyeceğinize söz verirsiniz. Tersi yönde atamaya izin verilmez.

function total(v: readonly number[]): number {
  return v.reduce((a, b) => a + b, 0);
}
const mutable: number[] = [1, 2, 3];
console.log(total(mutable)); // ok

Salt Okunur Demetler

Demetler de salt okunur olabilir: readonly [string, number]. Öğe türleri ve sıraları sabittir; tek tek konumlara yeniden atama yapılamaz.

const pair: readonly [string, number] = ['age', 30];
console.log(pair[0], pair[1]);
// pair[1] = 31; // Error: readonly tuple

Salt Okunur Demetler Değişikliği Engeller

Salt okunur diziler gibi salt okunur demetler de değişiklik yapan metotları kaldırır ve dizin üzerinden atamaları reddeder. Koordinat çiftleri gibi sabit biçimli kayıtlar için idealdirler.

const point: readonly [number, number] = [3, 4];
// point.push(5); // Error
// point[0] = 0; // Error
console.log(point[0] + point[1]);

Sabit İfadesi ve Salt Okunur Türü Karşılaştırması

Salt okunur diziler elde etmenin iki yolu arasında küçük farklar vardır. readonly number[] bildirimi genel öğe türünü korur. as const ise bir adım daha ileri giderek sabit değer türlerinden oluşan salt okunur bir demet oluşturur.

const a: readonly number[] = [1, 2, 3]; // elements: number
const b = [1, 2, 3] as const;            // readonly [1, 2, 3]
console.log(a[0], b[0]);

İkisi Arasında Seçim Yapma

Değişmezlik isterken genel öğe türlerini korumak istediğinizde readonly T[] bildirimini kullanın. Birleşim türü türetmek gibi durumlarda tam sabit değerleri de korumanız gerekiyorsa as const kullanın.

const DAYS = ['Mon', 'Tue', 'Wed'] as const;
type Day = typeof DAYS[number]; // 'Mon' | 'Tue' | 'Wed'
const d: Day = 'Tue';
console.log(d);

Paylaşılan Verilerde Değişmezlik

Salt okunur diziler ve demetler, paylaşılan sabitleri ve yapılandırma listelerini yanlışlıkla değiştirilmekten korur. Böylece beklenmedik değişikliklerden kaynaklanan hatalar derleme zamanında imkânsız hâle gelir.

const ALLOWED_PORTS: readonly number[] = [80, 443, 8080];
function isAllowed(p: number): boolean {
  return ALLOWED_PORTS.includes(p);
}
console.log(isAllowed(443), isAllowed(22));

Hızlı Kontrol

Salt okunur dizileri ve demetleri anlayıp anlamadığınızı test edin.

Özet: Salt Okunur Diziler ve Demetler

Şunları öğrendiniz:

  • readonly T[] / ReadonlyArray<T> değişiklik yapmayı engeller, ancak okumaya ve değişiklik yapmayan metotlara izin verir.
  • push/splice gibi değişiklik yapan metotlar türden kaldırılır.
  • Salt okunur demetler hem uzunluğu hem de öğe türlerini sabitler.
  • as const daha da ileri giderek sabit değer türlerinden oluşan salt okunur demetler üretir.

Sırada salt okunur koleksiyon türleri var.

const config: readonly string[] = ['a', 'b'];
const upper = config.map((s) => s.toUpperCase());
console.log(upper);

Sıkça Sorulan Sorular

“readonly Diziler ve Demetler” dersi ücretsiz mi?

Evet — “readonly Diziler ve Demetler” 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.

“readonly Diziler ve Demetler” dersinde ne öğreneceğim?

Dizileri ve demetleri değişiklik yapan yöntemlere karşı koruyun. 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 2. dersidir.

“readonly Diziler ve Demetler” 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. readonly Özellikler
  2. readonly Diziler ve Demetler
  3. ReadonlyArray ve ReadonlyMap
  4. Derin Değişmezlik Kalıpları
← TypeScript Academy Sayfasına Dön