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