readonly

Un modificateur qui bloque la modification d’un champ après la création de l’objet.

Sur cette page

Exemple

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

const cert: Certificate = { id: 'CW-2026-001', issuedAt: '2026-09-28', owner: 'Léa' }
cert.owner = 'Léa Dubois'

console.log(cert)
Résultat
{ id: 'CW-2026-001', issuedAt: '2026-09-28', owner: 'Léa Dubois' }

Définition et utilisation

#

Le modificateur readonly avant le nom d’un champ fait qu’une fois l’objet créé, ce champ ne peut plus être modifié. Toute tentative d’affectation d’une nouvelle valeur se termine par une erreur de compilation.

C’est une protection au niveau des types, pas dans le programme en cours d’exécution : après compilation vers JavaScript, l’objet peut toujours être modifié. Pour bloquer la modification à l’exécution, utilisez Object.freeze().

readonly fonctionne aussi dans les classes (un champ affecté seulement dans le constructeur) et avec les tableaux (readonly string[]). Pour un type entier à la fois, utilisez Readonly<T>.

Syntaxe

#
Syntaxe
interface Name {
  readonly field: type
}

Plus d’exemples

#
Tentative de modification d’un champ readonly
TypeScript
cert.id = 'CW-2026-999'
// Erreur : Cannot assign to 'id' because it is a read-only property.

Bonnes pratiques

#
  • Marquez comme readonly les identifiants et les dates de création. Ces champs ne devraient pas changer.
  • N’oubliez pas que readonly est superficiel : un objet imbriqué reste modifiable.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.