TypeScriptTypes utilitaires
Readonly<Type>
Crée un type dans lequel toutes les propriétés sont en lecture seule.
Exemple
#TypeScript
interface State {
level: number
exp: number
}
function levelUp(state: Readonly<State>): State {
return { level: state.level + 1, exp: 0 }
}
const current: Readonly<State> = { level: 4, exp: 980 }
console.log(levelUp(current))
console.log(current)Résultat
{ level: 5, exp: 0 }
{ level: 4, exp: 980 }Définition et utilisation
#Readonly<Type> ajoute le modificateur readonly à chaque champ. Vous pouvez lire un objet de ce type, mais toute tentative d’assigner une nouvelle valeur à un champ se termine par une erreur de compilation.
C’est une façon pratique de signaler qu’une fonction ne modifie pas l’objet reçu, ou de protéger l’état de l’application contre une mutation accidentelle.
La protection n’agit qu’à la compilation, et seulement de façon superficielle. Les objets imbriqués restent modifiables, et dans un programme en cours d’exécution vous pouvez changer l’objet sans problème, sauf si vous utilisez Object.freeze().
Syntaxe
#Syntaxe
type New = Readonly<Type>Paramètres de type
#Type
type d’objet
Le type dont les champs doivent être en lecture seule.
Plus d’exemples
#TypeScript
current.exp = 1000
// Erreur : Cannot assign to 'exp' because it is a read-only property.Bonnes pratiques
#- Marquez les paramètres comme
Readonly<T>quand la fonction ne doit pas les modifier. Le compilateur détectera les mutations accidentelles. - Pour les tableaux, utilisez
readonly T[]ouReadonlyArray<T>.
Entrées associées
#Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.