readonly Özellikler
Nesne özelliklerini başlatma sonrasında değiştirilemez olarak işaretleyin.
readonly Özellikler, 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.
Salt Okunur Değiştiricisi
readonly değiştiricisi, bir kez atanabilen ancak daha sonra yeniden atanamayan bir özelliği belirtir. Tür düzeyinde değişmezliği ifade ederek yanlışlıkla yapılan değişikliklerin önlenmesine yardımcı olur.
interface Point {
readonly x: number;
readonly y: number;
}
const p: Point = { x: 1, y: 2 };
console.log(p.x, p.y);
// p.x = 5; // Error: cannot assign to readonly propertyArayüzlerde Salt Okunur
Bir arayüzde readonly, oluşturulduktan sonra hangi alanların sabit olduğunu belgeler. Kullanıcılar bu alanları serbestçe okuyabilir, ancak derleyici yeniden atama yapılmasını engeller.
interface Config {
readonly env: string;
retries: number; // mutable
}
const c: Config = { env: 'prod', retries: 3 };
c.retries = 5; // allowed
console.log(c.env, c.retries);Yeniden Atamada Derleme Hatası
readonly bir özelliğe değer atamaya çalışmak derleme zamanı hatasına neden olur. Bu, paylaşılan durumun beklenmedik şekilde değiştirildiği birçok hata türünü yakalar.
interface User {
readonly id: number;
name: string;
}
const u: User = { id: 1, name: 'Ada' };
u.name = 'Grace'; // ok
// u.id = 2; // Error
console.log(u);Sınıf Özelliklerinde Salt Okunur
Sınıflar da readonly desteği sunar. Salt okunur bir alan, bildirim sırasında veya oluşturucunun içinde başlatılabilir; ancak başka hiçbir yerde başlatılamaz.
class Circle {
readonly radius: number;
constructor(r: number) {
this.radius = r; // allowed in constructor
}
}
const c = new Circle(5);
console.log(c.radius);Oluşturucuda Bir Kez Atama
Oluşturucu, bildirim dışında salt okunur bir alana değer atayabileceğiniz tek yerdir. Oluşturma tamamlandıktan sonra değer, nesnenin yaşam süresi boyunca değiştirilemez.
class Account {
readonly owner: string;
constructor(owner: string) {
this.owner = owner;
}
rename() {
// this.owner = 'x'; // Error: readonly outside constructor
}
}
console.log(new Account('Sam').owner);Salt Okunur Parametre Özellikleri
TypeScript'in parametre özellikleri, bir salt okunur alanı doğrudan oluşturucu imzasında tanımlayıp başlatmanıza olanak tanıyarak gereksiz kodu azaltır.
class Vector {
constructor(
readonly x: number,
readonly y: number
) {}
}
const v = new Vector(3, 4);
console.log(v.x, v.y);Salt Okunur Yalnızca Derleme Zamanında Geçerlidir
Önemli bir nokta olarak, readonly yalnızca tür sisteminde vardır. Çalışma zamanında silinir — JavaScript'te bununla ilgili bir kavram yoktur. Yeniden atamayı derlenmiş çıktıya tür bilgisi olmayan yollar üzerinden erişildiğinde değil, TypeScript kodunuzda engeller.
interface Box { readonly value: number; }
const b: Box = { value: 10 };
// At runtime b is a plain object; readonly is not enforced by JS.
console.log(b.value);Salt Okunur ve Sabit Karşılaştırması
Bu ikisini karıştırmayın. const, bir değişkenin yeniden bağlanmasını engeller. readonly, bir özelliğin yeniden atanmasını engeller. Bir const nesnesinin özellikleri readonly olarak belirtilmedikçe mutable kalabilir.
const obj = { count: 0 }; // const binding
obj.count = 5; // allowed: property is mutable
console.log(obj.count);Doğası Gereği Sığ
readonly sgıdır: işaret ettiği nesnenin veya dizinin içeriğini değil, yalnızca özelliğin kendisini korur. Bir nesneye salt okunur bir başvuru, yine de o nesnenin alanlarının değiştirilmesine izin verir.
interface Holder { readonly data: { n: number }; }
const h: Holder = { data: { n: 1 } };
// h.data = {...}; // Error
h.data.n = 99; // allowed: inner field is not readonly
console.log(h.data.n);Daha Güvenli Programlama Arayüzleri İçin Salt Okunur Kullanımı
Döndürülen nesnelerin alanlarını readonly olarak belirtmek, çağıranlara bu alanları değiştirmemeleri gerektiğini bildirir. Niyeti tür içinde ifade ederek yanlış kullanımı sessiz bir hata yerine derleme hatasına dönüştürür.
interface Snapshot { readonly takenAt: number; readonly size: number; }
function snapshot(): Snapshot {
return { takenAt: Date.now(), size: 1024 };
}
const s = snapshot();
console.log(s.size);Dizin İmzalarında Salt Okunur
Dizin imzalarını bile salt okunur yapabilirsiniz. Böylece girdileri okunabilen, ancak dizin üzerinden yeniden atanamayan eşleme benzeri bir tür elde edersiniz.
interface Scores {
readonly [name: string]: number;
}
const scores: Scores = { ada: 95, sam: 88 };
console.log(scores.ada);
// scores.ada = 100; // ErrorHızlı Kontrol
Salt okunur özellikleri anlayıp anlamadığınızı test edin.
Özet: Salt Okunur Özellikler
readonly değiştiricisinin:
- Bir özelliğe bir kez değer atanmasına izin verip daha sonra yeniden atamayı engellediğini,
- Sınıf alanlarında bildirim sırasında veya oluşturucuda kullanılabildiğini,
- Yalnızca derleme zamanında geçerli ve sığ olduğunu — iç içe verileri derinlemesine dondurmadığını,
constdeğiştiricisinden farklı olduğunu: birinin özellikleri, diğerinin değişken bağlamalarını koruduğunu öğrendiniz.
Sırada salt okunur diziler ve demetler var.
interface Meta { readonly id: number; }
const m: Meta = { id: 42 };
console.log(m.id);Sıkça Sorulan Sorular
“readonly Özellikler” dersi ücretsiz mi?
Evet — “readonly Özellikler” 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 Özellikler” dersinde ne öğreneceğim?
Nesne özelliklerini başlatma sonrasında değiştirilemez olarak işaretleyin. 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.
“readonly Özellikler” 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ı