Generiske klasser i TypeScript
Udover generiske grænseflader i TypeScript kan man også lave generiske klasser.
Lad os oprette en klasse User af generisk
type. Lad os også skrive en egenskab value
af generisk type og lave en passende
konstruktør:
typescriptclass User <T> {
value: T;
constructor(userData: T) {
this.value = userData;
}
}
Lad os nu lave et objekt af denne klasse og tildele det en strengværdi i egenskaben:
typescriptlet user = new User('john');
console.log(user.value); // 'john'
Men hvis vi allerede har givet objektet en strengværdi ved dets opkald, vil det ikke være muligt at overskrive denne værdi til en anden type:
typescriptlet user = new User('john');
user.value = 35;
Ved forsøg på at køre koden vil vi se følgende fejl:
typescriptType 'number' is not assignable to type 'string'.
Men på samme tid kan vi overskrive strengværdien:
typescriptlet user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'
Bemærk, at vi ikke kan overskrive egenskaben for det samme objekt til en anden type, men vi kan blot oprette et andet objekt:
typescriptlet newUser = new User(35);
console.log(newUser.value); // 35