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:
class 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:
let 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:
let user = new User('john');
user.value = 35;
La încercarea de a rula codul vom vedea următoarea eroare:
Type 'number' is not assignable to type 'string'.
Dar în același timp putem rescrie valoarea string:
let 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:
let newUser = new User(35);
console.log(newUser.value); // 35