Estos modificadores de propiedad controlan si una propiedad es obligatoria y si puede reasignarse.
Opcional (?)
ts
{
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Estos modificadores de propiedad controlan si una propiedad es obligatoria y si puede reasignarse.
?) {
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
Una propiedad opcional tiene el tipo T | undefined, así que el compilador te obliga a manejar el caso en que está ausente, evitando errores de tipo "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 actúa solo en tiempo de compilación (no se aplica en tiempo de ejecución), pero documenta y hace cumplir la inmutabilidad en el sistema de tipos, detectando mutaciones accidentales.
interface Config { readonly id: string; tags?: readonly string[]; }
type Frozen = Readonly<User>; // utility type makes ALL props readonly
? modela datos genuinamente opcionales y fuerza la seguridad ante valores nulos; readonly expresa y hace cumplir la inmutabilidad (ideal para configuración, props y para prevenir mutaciones accidentales de estado).
Ambos trasladan la verificación de corrección al compilador.