Pengubah properti ini mengawal sama ada properti diperlukan dan sama ada ia dapat ditetapkan semula.
Pilihan (?)
ts
{
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Pengubah properti ini mengawal sama ada properti diperlukan dan sama ada ia dapat ditetapkan semula.
?) {
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Propertyti pilihan mempunyai jenis T | undefined, jadi kompiler memaksa anda mengendalikan kes yang hilang — 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 pada masa kompilasi (tiada penguatkuasaan runtime), tetapi ia mendokumenkan dan menguatkuasakan ketaktubahan dalam sistem jenis, 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 pilihan dan memaksa null-safety; readonly mengekspresikan dan menguatkuasakan ketaktubahan (bagus untuk config, props, dan mencegah mutasi keadaan yang tidak disengaja).
Kedua-duanya mendorong pemeriksaan ketepatan ke dalam kompiler.