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.