75 TS – Variabili readonly e parametriche
Vediamo in questa lezione la proprietà readonly e come assegnare delle proprietà automaticamente ad una classe attraverso il costruttore.
class Car { readonly version : string; }
Una proprietà di tipo readonly deve avere obbligatoriamente un valore assegnato quando si crea oppure quando si inizializza nel costruttore. Vediamo la seconda soluzione
class Car { readonly version : string; constructor(version:string) { this.version = version; } }
se noi con una funzione provassimo a dettare un valore
class Car {
readonly version : string;
constructor(version:string) {
this.version = version;
}
setVersion(version:string) {
this.version = version;
}
}
Riceveremmo un errore perchè version ha la proprietà readonly e non può essere settata in altri modi, quindi o la mettiamo in creazione:
class car { readonly version : string = '1.1'; constructor(version:string) { this.version = version; } }
oppure nel costruttore e quindi stanziando l’oggetto che farà partire automaticamente il costruttore
let car = new Car('2.1');
aggiungiamo il getVersion()
getVersion() { return this.version; }
e lanciamo il console
let car = new Car('2.1'); console.log(car.getVersion());
non esistono altri modi per modificare version
car.version = '11';
Errore.
Questa proprietà ci torna utile quando vogliamo assegnare un unico valore quando impostiamo la classe.
Questo non impedisce che possa assegnarle l’attributo public o private, solo che si può modificare solo col costruttore, ma comunque posso assegnarle una visibilità.
Proprietà parametriche
Nel costruttore posso passare infinite proprietà specificandone il tipo e le visibilità
class Car { readonly version : string = '1.1'; constructor(version:string, protected nome: string, protected modello: string, protected anno: 'string', public colore: string) { this.version = version; } getVersion() { return this.version; } }
inseriamo le proprietà nell’oggetto, altrimenti avremmo errore
let car = new Car('2.1','Fiat','500c','2016','rosso');
aggiungiamo una metodo per ottenere il colore
getColor(){ return this.colore; }
Lanciamolo in console
console.log(car.getColor());
e ottengo il colore.
Riassumendo il tutto
Possiamo creare delle proprietà di sola lettura, impostandola quando la dichiariamo oppure nel costruttore.
Possiamo dichiarare proprietà all’interno del costruttore specificando il tipo di dato e la sua visibilità, la quale verrà aggiunta in automatico alla classe mantenendo le caratteristiche
.