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.