Nämä ominaisuuksien modifikaattorit hallitsevat, onko ominaisuus vaadittu ja voidaanko sitä uudelleen määrittää.
Optional (?)
ts
{
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Nämä ominaisuuksien modifikaattorit hallitsevat, onko ominaisuus vaadittu ja voidaanko sitä uudelleen määrittää.
?) {
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Valinnaisen ominaisuuden tyyppi on T | undefined, joten kääntäjä pakottaa sinua käsittelemään poissaolon tapauksen — estäen "cannot read property of undefined"-virheet.
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 on vain käännösaikana (ei runtime-pakotusta), mutta se dokumentoi ja pakottaa muuttumattomuuden tyyppijärjestelmässä, mikä saa kiinni tahattomia muutoksia.
interface Config { readonly id: string; tags?: readonly string[]; }
type Frozen = Readonly<User>; // utility type makes ALL props readonly
? mallintaa todella valinnaisia tietoja ja pakottaa null-turvallisuuden; readonly ilmaisee ja pakottaa muuttumattomuuden (loistava konfiguraatiolle, propsille ja tahattomien state-mutaatioiden estämiselle).
Molemmat työntävät oikeellisuuden tarkistamisen kääntäjään.