Classi generiche in TypeScript
Oltre alle interfacce generiche in TypeScript si possono creare anche classi generiche.
Creiamo una classe User di tipo
generico. Scriviamo anche una proprietà value
di tipo generico e creiamo il corrispondente
costruttore:
class User <T> {
value: T;
constructor(userData: T) {
this.value = userData;
}
}
Ora creiamo un oggetto di questa classe e assegniamogli un valore stringa nella proprietà:
let user = new User('john');
console.log(user.value); // 'john'
Tuttavia, se abbiamo già assegnato all'oggetto un valore stringa alla sua creazione, non possiamo sovrascrivere questo valore con un tipo diverso:
let user = new User('john');
user.value = 35;
Tentando di eseguire il codice vedremo il seguente errore:
Type 'number' is not assignable to type 'string'.
Ma allo stesso tempo possiamo sovrascrivere il valore stringa:
let user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'
Nota che non possiamo sovrascrivere la proprietà dello stesso oggetto con un tipo diverso, ma possiamo semplicemente creare un altro oggetto:
let newUser = new User(35);
console.log(newUser.value); // 35