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:
class 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:
let 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:
let user = new User('john');
user.value = 35;
Ved forsøg på at køre koden vil vi se følgende fejl:
Type 'number' is not assignable to type 'string'.
Men på samme tid kan vi overskrive strengværdien:
let 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:
let newUser = new User(35);
console.log(newUser.value); // 35