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:
typescriptclass 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:
typescriptlet 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:
typescriptlet user = new User('john');
user.value = 35;
Gjatë përpjekjes për të ekzekutuar kodin do të shohim gabimin e mëposhtëm:
typescriptType 'number' is not assignable to type 'string'.
Por në të njëjtën kohë ne mund të ripërcaktojmë vlerën e tipit string:
typescriptlet 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:
typescriptlet newUser = new User(35);
console.log(newUser.value); // 35