Algemene klasse in TypeScript

Benewens algemene koppelvlakke kan jy ook algemene klasse in TypeScript maak.

Kom ons skep 'n klas User van 'n algemene tik. Laat ons ook die eienskap value van 'n algemene tik skryf en 'n toepaslike konstrukteur maak:

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

Laat ons nou 'n voorwerp van hierdie klas maak en 'n stringwaarde aan sy eienskap toeskryf:

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

As ons egter reeds 'n stringwaarde aan die voorwerp toegewys het tydens die aanroep, kan ons nie hierdie waarde na 'n ander tik oorskryf nie:

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

Wanneer ons probeer om die kode uit te voer, sal ons die volgende fout sien:

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

Maar terselfdertyd kan ons die stringwaarde oorskryf:

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

Let op dat ons nie die eienskap van dieselfde voorwerp na 'n ander tik kan oorskryf nie, maar ons kan net 'n ander voorwerp skep:

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