TypeScriptдаги умумлашган класслар
TypeScriptда умумлашган интерфейслар билан бир қаторда умумлашган класслар ҳам яратиш мумкин.
Келгила, User номли умумлашган типдаги
класс яратайлик. value номли умумлашган типдаги
хоссани ҳам ёзиб, мос келгувчи
конструкторни яратамиз:
class User <T> {
value: T;
constructor(userData: T) {
this.value = userData;
}
}
Энди бу класснинг объектини яратиб, унинг хоссасига сатр қийматини ёзайлик:
let user = new User('john');
console.log(user.value); // 'john'
Бироқ, агар биз объектга чақирилган пайтда унинг учун сатр қийматини белгилаб қўйган бўлсак, бу қийматни бошқа турга ўзгартириб бўлмайди:
let user = new User('john');
user.value = 35;
Кодни ишга туширишга уринишда биз куйидаги хатони кўрамиз:
Type 'number' is not assignable to type 'string'.
Аммо шу билан бирга, биз сатр қийматини ўзгартиришимиз мумкин:
let user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'
Диққат қилинг, бир хил объектнинг хоссасини бошқа турга ўзгартириб бўлмайди, лекин бошқа объектни яратиш мумкин:
let newUser = new User(35);
console.log(newUser.value); // 35