Lesson 11 / 26
Optional & Readonly Properties
Mark properties as not-always-present, or as never-changing.
Optional properties
A ? after the property name means it may be missing from the object entirely.
interface Config {
host: string;
port?: number; // optional
}
const c1: Config = { host: "localhost" }; // OK
const c2: Config = { host: "localhost", port: 8080 }; // OKreadonly properties
readonly allows setting a property once (usually at creation) but blocks any later reassignment.
interface Point {
readonly x: number;
readonly y: number;
}
const p: Point = { x: 0, y: 0 };
p.x = 10;
// Error: Cannot assign to 'x' because it is a read-only property.readonly is compile-time only
readonly is erased at compile time — it protects you in TS code, not against JS code that ignores types at runtime.