- Learn
- Guida TypeScript
- Accesso alle proprietà della classe
Accesso alle proprietà della classe
Le proprietà di una classe TypeScript sono accessibili in lettura e scrittura per impostazione predefinita, come avviene anche per JavaScript. Tuttavia, in determinate situazioni vorremmo poter controllare l’accesso alle proprietà sia per effettuare eventuali controlli prima dell’assegnamento di un valore, sia per impedire ad esempio l’accesso in scrittura. Consideriamo il seguente esempio:
class Persona {
nome: string;
cognome: string;
nomeCompleto: string;
constructor(nome, cognome) {
this.nome = nome;
this.cognome = cognome;
this.nomeCompleto = nome + ' ' + cognome;
}
}
Abbiamo aggiunto alla classe Persona
la proprietà nomeCompleto
che contiene la concatenazione del valore delle proprietà nome
e cognome
. Naturalmente nell’intenzione dello sviluppatore il valore di questa nuova proprietà dovrebbe essere sincronizzato con il valore delle due proprietà da cui dipende. Ma dal momento che la proprietà nomeCompleto
è liberamente accessibile in lettura e scrittura, è possibile assegnare un valore che non corrisponde alla concatenazione di nome
e cognome
.
get
Per ottenere il comportamento desiderato possiamo definire la proprietà in sola lettura sfruttando l’accessor get, come avviene anche per le classi ECMAScript 6.
class Persona {
nome: string;
cognome: string;
constructor(nome, cognome) {
this.nome = nome;
this.cognome = cognome;
}
get nomeCompleto(): string {
return this.nome + ' ' + this.cognome;
}
}
In questo caso non avremo modo di modificare direttamente la proprietà nomeCompleto
in quanto è in sola lettura ed il suo valore è direttamente calcolato dalle proprietà nome
e cognome
.
var marioRossi = new Persona("Mario", "Rossi");
console.log(marioRossi.nomeCompleto); //Mario Rossi
marioRossi.nomeCompleto = "Giuseppe Verdi";
console.log(marioRossi.nomeCompleto); //Mario Rossi
set
Possiamo consentire la modifica di una proprietà tramite l’accessor set
potendo in questo modo controllare la logica di assegnamento dei valori. Ad esempio, potremmo consentire l’accessibilità in scrittura della nostra proprietà nomeCompleto
facendo in modo che il valore assegnato vada a modificare i valori di nome
e cognome
:
class Persona {
nome: string;
cognome: string;
constructor(nome, cognome) {
this.nome = nome;
this.cognome = cognome;
}
get nomeCompleto(): string {
return this.nome + ' ' + this.cognome;
}
set nomeCompleto(valore: string) {
var parti = valore.toString().split(' ');
this.nome = parti[0] || '';
this.cognome = parti[1] || '';
}
}
Come possiamo vedere dall’esempio, assumendo che nome e cognome siano separati da uno spazio, assegniamo la prima parte del nome completo alla proprietà nome
e la seconda parte alla proprietà cognome
. Assegnando quindi un valore alla proprietà nomeCompleto
otterremo quanto mostrato dal seguente esempio:
var marioRossi = new Persona('Mario', 'Rossi');
console.log(marioRossi.nomeCompleto); //Mario Rossi
marioRossi.nomeCompleto = 'Giuseppe Verdi';
console.log(marioRossi.nomeCompleto); //Giuseppe Verdi
console.log(marioRossi.nome); //Giuseppe
console.log(marioRossi.cognome); //Verdi
Se vuoi aggiornamenti su Accesso alle proprietà della classe inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
VLC Media Player: come caricare i sottotitoli
Scaricando un film da Internet può capitare di imbattersi in una pellicola con il flusso audio in lingua straniera. Ecco […]