TypeScriptInterfejsy i klasy
readonly
Modyfikator blokujący zmianę pola po utworzeniu obiektu.
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
#TypeScript
cert.id = 'CW-2026-999'
// Błąd: Cannot assign to 'id' because it is a read-only property.Dobre praktyki
#- Oznaczaj jako
readonlyidentyfikatory i daty utworzenia. Takie pola nie powinny się zmieniać. - Pamiętaj, że
readonlyjest płytkie: zagnieżdżony obiekt nadal można modyfikować.
Powiązane hasła
#- Readonly<Type>Tworzy typ, w którym wszystkie właściwości są tylko do odczytu.
- Typy obiektówOpis kształtu obiektu: jakie ma pola i jakiego typu.
- public, private, protectedModyfikatory dostępu określające, skąd można używać pól i metod klasy.
- as constZamraża literały w wyrażeniu: najwęższe typy i pola tylko do odczytu.
Widzisz błąd albo brakuje przykładu? Napisz do nas.