Klasy generyczne w TypeScript
Oprócz interfejsów generycznych w TypeScript można również tworzyć klasy generyczne.
Stwórzmy klasę User typu
generycznego. Napiszmy również właściwość value
typu generycznego i utwórzmy odpowiedni
konstruktor:
class User <T> {
value: T;
constructor(userData: T) {
this.value = userData;
}
}
Teraz utwórzmy obiekt tej klasy i przypiszmy mu łańcuchową wartość we właściwości:
let user = new User('john');
console.log(user.value); // 'john'
Jednakże, jeśli już przypisaliśmy obiektowi przy jego utworzeniu wartość łańcuchową, nie będziemy mogli przypisać tej właściwości wartości innego typu:
let user = new User('john');
user.value = 35;
Próba uruchomienia kodu spowoduje następujący błąd:
Type 'number' is not assignable to type 'string'.
Ale w tym samym czasie możemy zmienić wartość łańcuchową:
let user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'
Zauważ, że nie możemy zmienić typu właściwości tego samego obiektu na inny, ale możemy po prostu utworzyć inny obiekt:
let newUser = new User(35);
console.log(newUser.value); // 35