Classes génériques en TypeScript
En plus des interfaces génériques en TypeScript, on peut également créer des classes génériques.
Créons une classe User de type générique.
Écrivons également une propriété value
de type générique et créons un constructeur
correspondant :
class User <T> {
value: T;
constructor(userData: T) {
this.value = userData;
}
}
Maintenant, créons un objet de cette classe et donnons-lui une valeur de chaîne dans la propriété :
let user = new User('john');
console.log(user.value); // 'john'
Cependant, si nous avons déjà donné à l'objet une valeur de chaîne lors de son appel, nous ne pourrons pas réécrire cette valeur dans un autre type :
let user = new User('john');
user.value = 35;
En essayant d'exécuter le code, nous verrons l'erreur suivante :
Type 'number' is not assignable to type 'string'.
Mais en même temps, nous pouvons réécrire la valeur de chaîne :
let user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'
Notez que nous ne pouvons pas réécrire la propriété du même objet dans un autre type, mais nous pouvons simplement créer un autre objet :
let newUser = new User(35);
console.log(newUser.value); // 35