Clase Generice în TypeScript

Pe lângă interfețele generice în TypeScript se pot face și clase generice.

Să creăm clasa User de tip generic. Să scriem și proprietatea value de tip generic și să facem constructorul corespunzător:

typescriptclass User <T> {
  value: T;
  constructor(userData: T) {
    this.value = userData;
  }
}

Acum să facem un obiect al acestei clase și să-i scriem în proprietate o valoare string:

typescriptlet user = new User('john');
console.log(user.value); // 'john'

Cu toate acestea, dacă am stabilit deja obiectului la apelarea lui o valoare string, nu vom reuși să rescriem această valoare în alt tip:

typescriptlet user = new User('john');
user.value = 35;

La încercarea de a rula codul vom vedea următoarea eroare:

typescriptType 'number' is not assignable to type 'string'.

Dar în același timp putem rescrie valoarea string:

typescriptlet user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'

Rețineți că nu putem rescrie proprietatea aceluiași obiect într-un alt tip, dar putem crea pur și simplu un alt obiect:

typescriptlet newUser = new User(35);
console.log(newUser.value); // 35