Generické triedy v TypeScript
Okrem generických rozhraní v TypeScript je možné vytvárať aj generické triedy.
Vytvorme triedu User generického
typu. Napíšme aj vlastnosť value
generického typu a vytvorme zodpovedajúci
konštruktor:
class User <T> {
value: T;
constructor(userData: T) {
this.value = userData;
}
}
Teraz vytvorme objekt tejto triedy a priraďme mu do vlastnosti reťazcovú hodnotu:
let user = new User('john');
console.log(user.value); // 'john'
Avšak, ak sme už pri vytvorení objektu zadali reťazcovú hodnotu, nebude možné prepísať túto hodnotu na iný typ:
let user = new User('john');
user.value = 35;
Pri pokuse o spustenie kódu uvidíme nasledujúcu chybu:
Type 'number' is not assignable to type 'string'.
No zároveň môžeme prepísať reťazcovú hodnotu:
let user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'
Všimnite si, že prepísať vlastnosť toho istého objektu na iný typ nemôžeme, ale môžeme vytvoriť jednoducho iný objekt:
let newUser = new User(35);
console.log(newUser.value); // 35