TypeScript의 제네릭 클래스
TypeScript에서는 제네릭 인터페이스뿐만 아니라 제네릭 클래스도 만들 수 있습니다.
제네릭 타입의 클래스 User를 생성해 보겠습니다.
제네릭 타입의 속성 value도 작성하고
해당 생성자를 만들어 보겠습니다:
class User <T> {
value: T;
constructor(userData: T) {
this.value = userData;
}
}
이제 이 클래스의 객체를 만들고 속성에 문자열 값을 지정해 보겠습니다:
let user = new User('john');
console.log(user.value); // 'john'
그러나, 객체를 호출할 때 이미 문자열 값을 지정했다면, 이 값을 다른 타입으로 다시 할당하는 것은 불가능합니다:
let user = new User('john');
user.value = 35;
코드를 실행하려고 하면 다음과 같은 오류를 보게 됩니다:
Type 'number' is not assignable to type 'string'.
하지만 동시에 문자열 값은 재할당할 수 있습니다:
let user = new User('john');
user.value = 'alex';
console.log(user.value); // 'alex'
동일한 객체의 속성을 다른 타입으로 재할당하는 것은 할 수 없지만, 단순히 다른 객체를 생성할 수는 있습니다:
let newUser = new User(35);
console.log(newUser.value); // 35