TypeScript හි සාමාන්‍යීකෘත් වර්ග

TypeScript හි සාමාන්‍යීකෘත් අතුරුමුහුණතුන්ට අමතරව සාමාන්‍යීකෘත් වර්ග ද සෑදිය හැකිය.

අපි <User<> නම් සාමාන්‍යීකෘත් වර්ගයක් සාදමු. <value<> යන සාමාන්‍යීකෘත් වර්ගයේ ගුණාංගයක් ද ලියා අදාළ ඉදිකිරීම්කරුවෙකු (constructor) ද සාදමු:

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

දැන් අපි මෙම වර්ගයේ වස්තුවක් සාදා එහි ගුණාංගයට අනුලකුණු අගයක් (string value) ලියමු:

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