76 TS – setter e getter di una classe
Quando in una classe abbiamo una proprietà pubblica e vogliamo intervenire prima che l’utente la modifichi, tipo fare delle verifiche, trasformare in maiuscolo o viceversa… è il caso di utilizzare un setter.
Data la classe User con la proprietà privata _name (metto l’underscore per differenziarla da name che passerò dopo col setter)
class User { private _name : string; }
vado a settare con set la proprietà name che trasforma in maiuscolo la proprietà private _name
set name(name : string) { this._name = name.toUpperCase(); }
posso anche mettere che torna void
set name(name : string) : void { this._name = name.toUpperCase(); }
andiamo a leggere la proprietà con il getter utilizzando get name
get name() { return this._name; }
Creiamo un oggetto
let user = new User(); user.name = 'pippo'; console.log(user.name);
Quando andiamo a settare name dall’oggetto, in realtà stiamo accedendo indirettamente ad _name.
Se scriviamo in minuscolo, comunque il risultato sarà restituito in maiuscolo.
Si possono effettuare nel setter numerose operazioni e controlli, tipo se la stringa ha un certo numero di caratteri, se rispetta determinate sintassi, se deve essere trasformata.
Solitamente il setter è utile quando lavora su una proprietà interna alla classe, privata e non accessibile dall’esterno.