Modifikasi properti ini mengontrol apakah properti wajib dan apakah dapat ditetapkan kembali.
Optional (?)
ts
{
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Modifikasi properti ini mengontrol apakah properti wajib dan apakah dapat ditetapkan kembali.
?) {
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Sifat opsional memiliki tipe T | undefined, jadi kompiler memaksa Anda menangani kasus yang tidak ada — mencegah bug "cannot read property of undefined".
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 hanya berlaku pada waktu kompilasi (tanpa penegakan saat runtime), tetapi mendokumentasikan dan menegakkan immutability dalam sistem tipe, menangkap mutasi yang tidak disengaja.
interface Config { readonly id: string; tags?: readonly string[]; }
type Frozen = Readonly<User>; // utility type makes ALL props readonly
? memodelkan data yang benar-benar opsional dan memaksa keamanan null; readonly mengekspresikan dan menegakkan immutability (bagus untuk config, props, dan mencegah mutasi status yang tidak disengaja).
Keduanya mendorong pemeriksaan kebenaran ke dalam kompiler.