ReadonlyArray ve ReadonlyMap
Yerleşik salt okunur koleksiyon türlerini kullanın.
ReadonlyArray ve ReadonlyMap, 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.
Salt Okunur Koleksiyon Türleri
Dizilerin yanı sıra TypeScript, yerleşik koleksiyonlarının salt okunur çeşitlerini de sunar: ReadonlyArray<T>, ReadonlyMap<K, V> ve ReadonlySet<T>. Her biri API'sinin yalnızca değiştirme yapmayan bölümlerini sunar.
const arr: ReadonlyArray<number> = [1, 2, 3];
console.log(arr.length, arr.includes(2));ReadonlyArray Özeti
ReadonlyArray<T> yinelemeye, indekslemeye ve map ile filter gibi yöntemlere izin verir; ancak push, pop veya indeks atamasına izin vermez. Salt okunur ailesinin dizi biçimidir.
const tags: ReadonlyArray<string> = ['ts', 'js'];
console.log(tags.map((t) => t.toUpperCase()));
// tags.push('css'); // ErrorReadonlyMap
ReadonlyMap<K, V> arama yapmanızı, yinelemenizi ve anahtarları denetlemenizi sağlar; ancak set, delete ve clear işlemlerini kaldırır. Haritanın içeriği, tüketicinin bakış açısından sabittir.
const ages: ReadonlyMap<string, number> = new Map([['Ada', 30], ['Sam', 25]]);
console.log(ages.get('Ada'), ages.has('Sam'));
// ages.set('Lee', 40); // ErrorReadonlyMap'ten Okuma
Tüm okuma işlemleri kullanılmaya devam eder: get, has, size, keys, values, entries ve yineleme. Yalnızca değiştiren yöntemler kaldırılmıştır.
const m: ReadonlyMap<string, number> = new Map([['a', 1], ['b', 2]]);
for (const [k, v] of m) {
console.log(k, v);
}
console.log('size:', m.size);ReadonlySet
ReadonlySet<T> üyelik denetimlerini ve yinelemeyi destekler; ancak add, delete ve clear işlemlerini kaldırır. allowed değerlerden oluşan sabit kümeler için kullanın.
const allowed: ReadonlySet<string> = new Set(['read', 'write']);
console.log(allowed.has('read'), allowed.has('delete'));
// allowed.add('admin'); // ErrorReadonlySet Üzerinde Yineleme
Bir ReadonlySet üzerinde yineleme yapabilir ve size değerini okuyabilirsiniz; yalnızca içeriğini değiştiremezsiniz. Bu, onu izin listeleri ve izin kümeleri için ideal hâle getirir.
const perms: ReadonlySet<string> = new Set(['view', 'edit']);
perms.forEach((p) => console.log('perm:', p));
console.log('count:', perms.size);İşlevlere Salt Okunur Değer Geçirme
Yalnızca okuma yapması gereken işlevlerde salt okunur bir koleksiyon türü kabul edin. Bu, amacı açıkça belirtir ve işlevin çağırana ait verileri değiştirmesini önler.
function describe(set: ReadonlySet<string>): string {
return 'has ' + set.size + ' items';
}
const s = new Set(['x', 'y']);
console.log(describe(s));Değiştirilebilir Koleksiyonlar Atanabilir
Normal bir Map veya Set, salt okunur karşılığına atanabilir; çünkü yetenekleri genişletmiyor, daraltıyorsunuz. İşlev yalnızca değiştirme yetkilerinden vazgeçer.
function keys(m: ReadonlyMap<string, number>): string[] {
return Array.from(m.keys());
}
const real = new Map([['a', 1]]);
console.log(keys(real));Değişmez Koleksiyon API'leri
Salt okunur koleksiyon türleri, değişmez bir view tanımlar. Temelindeki nesne başka bir yerde hâlâ değiştirilebilir; salt okunur tür yalnızca bu başvurunun yapabileceklerini kısıtlar.
const backing = new Set<number>([1, 2]);
const view: ReadonlySet<number> = backing;
// view.add(3); // Error through the readonly view
backing.add(3); // but the original can still mutate
console.log(view.size);Doğru Salt Okunur Türü Seçme
Salt okunur türü veri yapınıza uygun seçin: sıralı listeler için ReadonlyArray, anahtar-değer aramaları için ReadonlyMap, benzersiz üyelikler için ReadonlySet. Her biri kendi biçimindeki değişmezliği zorunlu kılar.
const roles: ReadonlySet<string> = new Set(['admin', 'user']);
const limits: ReadonlyMap<string, number> = new Map([['admin', 100]]);
console.log(roles.has('user'), limits.get('admin'));Daha Güvenli Paylaşılan Durum
İç koleksiyonları salt okunur türler olarak sunmak, çağıranların modülünüzün durumunu bozmasını önler. Verileri özgürce inceleyebilirler; ancak yalnızca sizin kodunuz onları değiştirebilir.
class Registry {
private items = new Set<string>();
add(name: string): void { this.items.add(name); }
get all(): ReadonlySet<string> { return this.items; }
}
const r = new Registry();
r.add('a');
console.log(r.all.has('a'));Kısa Kontrol
Salt okunur koleksiyon türleri konusundaki anlayışınızı sınayın.
Özet: Salt Okunur Koleksiyonlar
Salt okunur koleksiyon ailesini öğrendiniz:
ReadonlyArray<T>,ReadonlyMap<K, V>veReadonlySet<T>yalnızca okuma işlemlerini sunar.- Değiştiren yöntemler (
set,add,delete,push) kaldırılmıştır. - Değiştirilebilir koleksiyonlar, salt okunur karşılıklarına atanabilir.
- Daha güvenli paylaşılan durum için parametre ve dönüş türleri olarak çok kullanışlıdırlar.
Son olarak derin değişmezlik kalıpları.
function count(s: ReadonlySet<number>): number {
return s.size;
}
console.log(count(new Set([1, 2, 3])));Sıkça Sorulan Sorular
“ReadonlyArray ve ReadonlyMap” dersi ücretsiz mi?
Evet — “ReadonlyArray ve ReadonlyMap” 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.
“ReadonlyArray ve ReadonlyMap” dersinde ne öğreneceğim?
Yerleşik salt okunur koleksiyon türlerini kullanı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.
“ReadonlyArray ve ReadonlyMap” 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
- readonly Özellikler
- readonly Diziler ve Demetler
- ReadonlyArray ve ReadonlyMap
- Derin Değişmezlik Kalıpları