Madarasa ya Jumla katika TypeScript

Licha ya interfaces za jumla katika TypeScript unaweza pia kutengeneza madarasa ya jumla.

Wacha tuunde darasa User la aina ya jumla. Tuandae mali value ya aina ya jumla na tufanye mkabala unaofaa:

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

Sasa tufanye kitu cha darasa hili na tuandikie thamani ya mfumo wa herufi kwenye mali yake:

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

Hata hivyo, ikiwa tayari tumeweka kitu thamani ya herufi wakati wa kiitajo chake, haturuhusiwi kubadilisha thamani hiyo kuwa aina nyingine:

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

Wakati wa kujaribu kuendesha msimbo tutaona kosa lifuatalo:

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

Lakini wakati huo huo tunaweza kubadilisha thamani ya herufi:

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

Kumbuka kuwa hatuwezi kubadilisha mali ya kitu kile kile kuwa aina nyingine, lakini tunaweza tu kuunda kitu kingine:

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