Klasat e Përgjithësuara në TypeScript
Përveç interfejseve të përgjithësuara në TypeScript mund të bëhen edhe klasa të përgjithësuara.
Le të krijojmë një klasë User të tipit
të përgjithësuar. Le të shkruajmë edhe vetinë value
të tipit të përgjithësuar dhe të bëjmë konstruktorin
përkatës:
class User <T> {
value: T;
constructor(userData: T) {
this.value = userData;
}
}
Tani le të bëjmë një objekt të kësaj klase dhe t'i caktojmë një vlerë të tipit string:
let user = new User('john');
console.log(user.value); // 'john'
Megjithatë, nëse ne i kemi caktuar objektit një vlerë string gjatë thirrjes së tij, nuk do të jetë e mundur të ripërcaktohet kjo vlerë në një tip tjetër:
let user = new User('john');
user.value = 35;
Gjatë përpjekjes për të ekzekutuar kodin do të shohim gabimin e mëposhtëm:
Type 'number' is not assignable to type 'string'.
Por në të njëjtën kohë ne mund të ripërcaktojmë vlerën e tipit string:
let user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'
Vini re se nuk mund të ripërcaktohet vetia e të njëjtit objekt në një tip tjetër, por mund të krijojmë thjesht një objekt tjetër:
let newUser = new User(35);
console.log(newUser.value); // 35