Kelas Generik dalam TypeScript

Selain antara muka generik dalam TypeScript, kelas generik juga boleh dibuat.

Mari kita buat kelas User daripada jenis generik. Mari kita tulis juga sifat value jenis generik dan buat pembina yang sepadan:

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

Sekarang mari buat objek kelas ini dan tetapkan nilai rentetan kepadanya dalam sifat:

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

Walau bagaimanapun, jika kita telah menetapkan nilai rentetan kepada objek semasa ia dipanggil, kita tidak akan dapat menulis semula nilai ini kepada jenis lain:

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

Apabila cuba menjalankan kod, kita akan melihat ralat berikut:

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

Tetapi pada masa yang sama, kita boleh menulis semula nilai rentetan:

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

Perhatikan bahawa kita tidak boleh menulis semula sifat objek yang sama kepada jenis lain, tetapi kita boleh membuat objek lain:

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