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

.