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:
typescriptclass 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:
typescriptlet 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:
typescriptlet user = new User('john');
user.value = 35;
Ved forsøk på å kjøre koden vil vi se følgende feil:
typescriptType 'number' is not assignable to type 'string'.
Men samtidig kan vi overskrive strengverdien:
typescriptlet 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:
typescriptlet newUser = new User(35);
console.log(newUser.value); // 35