Generiske klasser i TypeScript
I tillegg til generiske grensesnitt i TypeScript kan man også lage generiske klasser.
La oss opprette en klasse User av generisk
type. La oss også skrive en egenskap value
av generisk type og lage en tilsvarende
konstruktør:
class User <T> {
value: T;
constructor(userData: T) {
this.value = userData;
}
}
La oss nå lage et objekt av denne klassen og skrive en strengverdi i egenskapen:
let user = new User('john');
console.log(user.value); // 'john'
Men hvis vi allerede har satt en strengverdi til objektet ved dets opprettelse, vil vi ikke kunne overskrive denne verdien til en annen type:
let user = new User('john');
user.value = 35;
Ved forsøk på å kjøre koden vil vi se følgende feil:
Type 'number' is not assignable to type 'string'.
Men samtidig kan vi overskrive strengverdien:
let user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'
Legg merke til at vi ikke kan overskrive egenskapen til det samme objektet til en annen type, men vi kan opprette et helt annet objekt:
let newUser = new User(35);
console.log(newUser.value); // 35