72 TS – Le classi
Facciamo un breve riassunto sulle classi introdotte in JS ES6.
Le classi vengono introdotte con il costrutto class .
class Animal { }
Questa è una classe basilare in javascript, riportandola in TypeScript e con la automatica compilazione in js, se si è scelto ES5 verrà generata questa funzione
var Animal = /** @class */ (function () { function Animal() { } return Animal; }());
Infatti in ES5 il concetto di classe era utilizzato tramite una funzione che richiamava il suo parametro con il comando this
function Animal(name) { this.name = name } var cat = new Animal('gatto');
se vogliamo resituito il nome possiamo girare una funzione getName
function Animal(name) { this.name = name } Animal.prototype.getName = function() { return this.name; } var cat = new Animal('gatto'); console.log(cat.getName());
Questo era il vecchio modo di js ES5 di generare una classe chiamata Animal.
Analogamente, riprendendo il nuovo metodo in ts, creo la classe con class e creo il suo costruttore con constructor che verrà eseguito quando la classa sarà invocata
class Animal { constructor() { } }
ora assegno il tipo stringa a name, sia come proprietà sia come parametro del costruttore
class Animal { name: string constructor(name: string) { this.name = name; } getName() { return 'name is' + this.name; } }
Da notare che la creazione del metodo getName() non fa uso della keyword function.
Questo codice che abbiamo creato è identico a quello usato in ES6 tranne che per la tipizzazione delle proprietà e dei parametri.