Bu özellik değiştiricileri bir özelliğin gerekli olup olmadığını ve yeniden atanıp atanmayacağını kontrol eder.
İsteğe bağlı (?)
ts
{
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Bu özellik değiştiricileri bir özelliğin gerekli olup olmadığını ve yeniden atanıp atanmayacağını kontrol eder.
?) {
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
İsteğe bağlı bir özellik T | undefined türüne sahiptir, bu nedenle derleyici sizi eksik durumu işlemeye zorlar — "cannot read property of undefined" hatalarını önler.
interface Point { readonly x: number; readonly y: number; }
const p: Point = { x: 1, y: 2 };
p.x = 5; // ❌ Error: cannot assign to readonly property
// arrays too
const nums: readonly number[] = [1, 2, 3];
nums.push(4); // ❌ push doesn't exist on readonly array
readonly yalnızca derleme zamanıdır (çalışma zamanı uygulaması yok), ancak tür sisteminde değişmezliği belgeler ve zorunlu kılar, istenmeyen mutasyonları yakalar.
interface Config { readonly id: string; tags?: readonly string[]; }
type Frozen = Readonly<User>; // utility type makes ALL props readonly
? gerçekten isteğe bağlı verileri modellemesini ve null-güvenliği zorunlu kılar; readonly değişmezliği ifade eder ve zorunlu kılar (yapılandırma, props ve istenmeyen durum mutasyonunu önlemek için harika).
Her ikisi de doğruluk kontrolünü derleyiciye iter.