TypeScript-daky umumy klaslar

TypeScript-de umumy interfeyslerden başga-da, umumy klaslar hem etmek bolýar.

Geliň, umumy tipindäki User klasyny döreteliň. Şeýle hem value umumy tipindäki hassaýy ýazyň we degili konstruktory taýýarlaň:

typescriptclass User <T> {
  value: T;
  constructor(userData: T) {
    this.value = userData;
  }
}

Indi bu klasyň objektiňi döreteliň we ona hassasynda setir bahasyny ýazyň:

typescriptlet user = new User('john');
console.log(user.value); // 'john'

Emma, eger objekti çagyrylanda setir bahasyny eýýäm belleýän bolsak, bu bahany beýleki tipe ýazdyryp bolmaýar:

typescriptlet user = new User('john');
user.value = 35;

Kody işletmek synanyşygymyzda aşakdaky ýaly ýalňyşlygy göreris:

typescriptType 'number' is not assignable to type 'string'.

Emma şol bir wagtyň özünde setir bahasyny ýazdyryp bileris:

typescriptlet user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'

Üns beriň, bir objektiň hassaýyny şol bir objektiň beýleki tipine ýazdyryp bolmaýar, ýöne beýleki bir objekti ýönekeý ýagdaýda döredip bileris:

typescriptlet newUser = new User(35);
console.log(newUser.value); // 35