Обобщени класове в TypeScript
Освен обобщени интерфейси в TypeScript може да се правят и обобщени класове.
Нека създадем клас User от обобщен
тип. Нека напишем също свойство value
от обобщен тип и направим съответен
конструктор:
class User <T> {
value: T;
constructor(userData: T) {
this.value = userData;
}
}
Сега нека направим обект от този клас и да му запишем в свойството стойност от тип string:
let user = new User('john');
console.log(user.value); // 'john'
Въпреки това, ако вече сме задали на обекта при неговото създаване стойност от тип string, няма да можем да презапишем тази стойност с друг тип:
let user = new User('john');
user.value = 35;
При опит за стартиране на кода ще видим следната грешка:
Type 'number' is not assignable to type 'string'.
Но в същото време можем да презапишем стойността от тип string:
let user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'
Обърнете внимание, че не можем да презапишем свойството на същия обект с друг тип, но можем просто да създадем друг обект:
let newUser = new User(35);
console.log(newUser.value); // 35