TypeScript'te Genelleştirilmiş Sınıflar

TypeScript'te genelleştirilmiş arayüzlerin yanı sıra genelleştirilmiş sınıflar da yapılabilir.

Genelleştirilmiş tipte bir User sınıfı oluşturalım. Ayrıca genelleştirilmiş tipte bir value özelliği yazalım ve ilgili yapıcı metodu oluşturalım:

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

Şimdi bu sınıfın bir nesnesini oluşturalım ve özelliğine string bir değer yazalım:

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

Ancak, nesneye oluşturulurken string bir değer atanmışsa, bu değeri başka bir tipe yeniden yazmak mümkün olmayacaktır:

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

Kodu çalıştırmaya çalıştığımızda şu hatayı göreceğiz:

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

Ancak aynı zamanda string değeri değiştirebiliriz:

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

Dikkat edin, aynı nesnenin özelliğini başka bir tiple değiştiremeyiz, ancak başka bir nesne oluşturabiliriz:

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