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.