Ezek a tulajdonság-módosítók azt szabályozzák, hogy egy tulajdonság kötelező-e és hogy újra hozzárendelhető-e.
Optional (?)
ts
{
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Ezek a tulajdonság-módosítók azt szabályozzák, hogy egy tulajdonság kötelező-e és hogy újra hozzárendelhető-e.
?) {
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Egy opcionális tulajdonság típusa T | undefined, így a fordító kényszerít a hiányzó esetek kezelésére — megelőzve a "cannot read property of undefined" hibákat.
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
A readonly csak fordítási időben létezik (nincs futási idejű kényszerítés), de dokumentálja és kényszeríti az immutabilitást a típusrendszerben, elkapva a véletlen mutációkat.
interface Config { readonly id: string; tags?: readonly string[]; }
type Frozen = Readonly<User>; // utility type makes ALL props readonly
A ? valóban opcionális adatokat modellez és null-biztonságot kényszerít; a readonly kifejezi és kényszeríti az immutabilitást (kiváló a konfigurációhoz, props-hoz és a véletlen állapot-mutáció megelőzéséhez).
Mindkettő a fordítóba kényszeríti a helyességi ellenőrzést.