Diese Eigenschaftsmodifikatoren steuern, ob eine Eigenschaft erforderlich ist und ob sie neu zugewiesen werden kann.
Optional (?)
ts
{
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Diese Eigenschaftsmodifikatoren steuern, ob eine Eigenschaft erforderlich ist und ob sie neu zugewiesen werden kann.
?) {
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Eine optionale Eigenschaft hat den Typ T | undefined, daher zwingt der Compiler Sie, den Fehlerfall zu behandeln — und verhindert "cannot read property of undefined"-Fehler.
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 ist nur Compile-Zeit (keine Runtime-Erzwingung), dokumentiert und erzwingt aber Unveränderlichkeit im Typsystem und erfasst versehentliche Mutationen.
interface Config { readonly id: string; tags?: readonly string[]; }
type Frozen = Readonly<User>; // utility type makes ALL props readonly
? modelliert echte optionale Daten und erzwingt Null-Sicherheit; readonly drückt Unveränderlichkeit aus und erzwingt sie (großartig für Config, Props und zur Vermeidung versehentlicher State-Mutation).
Beide schieben die Korrektheitsprüfung in den Compiler.