readonly

Modyfikator blokujący zmianę pola po utworzeniu obiektu.

Na tej stronie

Przykład

#
TypeScript
interface Certificate {
  readonly id: string
  readonly issuedAt: string
  owner: string
}

const cert: Certificate = { id: 'CW-2026-001', issuedAt: '2026-09-28', owner: 'Ania' }
cert.owner = 'Anna Nowak'

console.log(cert)
Wynik
{ id: 'CW-2026-001', issuedAt: '2026-09-28', owner: 'Anna Nowak' }

Definicja i zastosowanie

#

Modyfikator readonly przed nazwą pola sprawia, że po utworzeniu obiektu nie można go już zmienić. Próba przypisania nowej wartości kończy się błędem kompilacji.

To ochrona na poziomie typów, a nie w działającym programie: po kompilacji do JavaScriptu obiekt da się zmienić. Do zablokowania w czasie działania służy Object.freeze().

readonly działa też w klasach (pole ustawiane tylko w konstruktorze) i przy tablicach (readonly string[]). Dla całego typu naraz użyjesz Readonly<T>.

Składnia

#
Składnia
interface Nazwa {
  readonly pole: typ
}

Więcej przykładów

#
Próba zmiany pola readonly
TypeScript
cert.id = 'CW-2026-999'
// Błąd: Cannot assign to 'id' because it is a read-only property.

Dobre praktyki

#
  • Oznaczaj jako readonly identyfikatory i daty utworzenia. Takie pola nie powinny się zmieniać.
  • Pamiętaj, że readonly jest płytkie: zagnieżdżony obiekt nadal można modyfikować.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.