Vispārinātie klases TypeScript
Papildus vispārinātajiem interfeisiem TypeScript var izveidot arī vispārinātas klases.
Izveidosim klasi User vispārinātā
tipā. Uzrakstīsim arī īpašību value
vispārinātā tipa un izveidosim atbilstošo
konstruktoru:
class User <T> {
value: T;
constructor(userData: T) {
this.value = userData;
}
}
Tagad izveidosim šīs klases objektu un ierakstīsim tam īpašībā virknes vērtību:
let user = new User('john');
console.log(user.value); // 'john'
Tomēr, ja mēs jau esam iestatījuši objektam pie tā izsaukšanas virknes vērtību, mums neizdosies pārrakstīt šo vērtību citā tipā:
let user = new User('john');
user.value = 35;
Mēģinot palaist kodu, mēs redzēsim šādu kļūdu:
Type 'number' is not assignable to type 'string'.
Bet tajā pašā laikā mēs varam pārrakstīt virknes vērtību:
let user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'
Ievērojiet, ka pārrakstīt īpašību no tā paša objekta citā tipā mēs nevaram, bet varam izveidot vienkārši citu objektu:
let newUser = new User(35);
console.log(newUser.value); // 35