readonly — czy obiekt jest niemutowalny w runtime?
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
readonly blokuje przypisanie do właściwości przez daną typowaną referencję. Nie zamraża obiektu podczas wykonania i nie działa automatycznie głęboko.
TypeScript
interface Settings {
readonly id: string;
nested: { theme: string };
}
const settings: Settings = { id: 's1', nested: { theme: 'light' } };
// settings.id = 's2'; // błąd TypeScript
settings.nested.theme = 'dark'; // dozwoloneDoprecyzowanie: Readonly<T> też jest płytkie. Object.freeze działa w runtime, ale również zamraża tylko własne właściwości danego obiektu.
Pułapka: readonly to kontrakt użycia w typach, nie pełna ochrona przed mutacją przez inny alias.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.
Powiązane pytania
- Co naprawdę robi readonly? — TypeScript