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