77 TS – Metodi e proprietà statici delle classi

Vediamo i metodi e le proprietà statici di una classe. Abbiamo visto metodi e proprietà che fanno parte anche dell’oggetto creato con quella classe, in alcuni casi, invece possono servire metodi o proprietà che servono facenti parte solo della classe e non dell’oggetto.

Esempio, abbiamo questa classe MathCalc che restituisce delle costanti matematiche, tipo il pi greco, stanziamo la proprietà PI in sula lettura e di tipo static

class MathCalc {
    static readonly PI = 3.1459;
}

Come possiamo avere disponibilità di questa proprietà nell’oggetto ?

let calc =new MathCalc();
console.log(calc.PI);

In questo modo PI non è accessibile dall’oggetto, ma fa parte solo della classe, percui

let calc =new MathCalc();
console.log(MathCalc.PI);

Così ottengo il valore, il quale non fa parte dell’istanza calc creata, ma solo della sua classe.

Aggiungiamo un metodo che calcia la circonferenza di un cerchio

static calcCirclePerimeter(r: number) {
    return 2 * MathCalc.PI * r;
}

Da notare che per accedere a PI, specifico la classe.

Quindi per calcolare la circonferenza di un cerchio che ha un raggio di 2 cm

let calc =new MathCalc();
console.log(MathCalc.PI);
console.log(MathCalc.calcCirclePerimeter(2));

anche in un metodo pubblico che deve accedere ad una proprietà statica dobbiamo specificare la classe

class MathCalc {
    static readonly PI = 3.1459;
    static readonly rate : number = 1.12;

    static calcCirclePerimeter(r: number) {
        return 2 * this.PI * r;
    }

    calcEurToDollar(euro:number){
        return MathCalc.rate * euro;
    }
}

ecco il risultato

let calc =new MathCalc();
console.log(MathCalc.PI);
console.log(MathCalc.calcCirclePerimeter(2));
console.log('120 euro sono : ' + calc.calcEurToDollar(120) + ' dollari');

Riassuntino

In presenza di proprietà e metodi statici di una classe, dobbiamo richiamarli specificando il nome della classe alla quale appartengono.