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:
class 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:
let 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:
let user = new User('john');
user.value = 35;
Kodu çalıştırmaya çalıştığımızda şu hatayı göreceğiz:
Type 'number' is not assignable to type 'string'.
Ancak aynı zamanda string değeri değiştirebiliriz:
let 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:
let newUser = new User(35);
console.log(newUser.value); // 35