제네릭(generics)은 TypeScript에서 코드의 유연성을 높이고 재사용성을 증가시키는 강력한 기능입니다. 제네릭을 사용하여 다른 클래스와의 상호작용을 구현하고자 할 때는 제네릭 인터페이스를 활용하는 것이 일반적입니다. 이를 통해 다양한 유형과 상호작용하며 타입 안정성을 확보할 수 있습니다.
이번 포스트에서는 TypeScript에서 제네릭 인터페이스를 활용하여 다른 클래스와의 상호작용을 구현하는 방법을 살펴보겠습니다.
1. 제네릭 인터페이스 기본 개념
제네릭 인터페이스는 선언할 때 구체적인 타입을 지정하지 않고, 인터페이스를 구현하는 클래스에서 구체적인 타입을 설정할 수 있도록 합니다. 이를 통해 재사용 가능하고 유연한 코드를 작성할 수 있습니다.
interface Container<T> {
value: T;
}
class NumberContainer implements Container<number> {
value: number;
constructor(value: number) {
this.value = value;
}
}
class StringContainer implements Container<string> {
value: string;
constructor(value: string) {
this.value = value;
}
}
위 예제에서 Container
인터페이스는 제네릭 타입 T
를 정의하고, 이를 구현하는 NumberContainer
와 StringContainer
클래스에서 구체적인 타입을 지정하여 사용하는 것을 볼 수 있습니다.
2. 제네릭 인터페이스 활용 예시
다음은 제네릭 인터페이스를 사용하여 다른 클래스와의 상호작용을 구현하는 간단한 예시입니다.
interface Identifiable<T> {
id: T;
getId(): T;
}
class Product implements Identifiable<number> {
constructor(public id: number, public name: string) {}
getId(): number {
return this.id;
}
}
class User implements Identifiable<string> {
constructor(public id: string, public name: string) {}
getId(): string {
return this.id;
}
}
위 예제에서 Identifiable
인터페이스는 제네릭 타입 T
를 지정하여 id
속성과 getId
메서드를 정의합니다. 그리고 이를 구현하는 Product
와 User
클래스에서 각각 number
와 string
타입을 사용하여 상호작용을 구현하고 있습니다.
3. 마무리
제네릭 인터페이스를 활용하면 다른 클래스와의 상호작용을 보다 유연하게 구현할 수 있습니다. 제네릭을 사용하여 일반적인 동작을 추상화하고 여러 유형에 대해 일반화된 코드를 작성함으로써 코드의 재사용성을 높이고 타입 안정성을 확보할 수 있습니다.
제네릭 인터페이스에 대한 더 자세한 내용은 TypeScript 공식 문서를 참고하시기 바랍니다.
이상으로 제네릭 인터페이스를 사용하여 다른 클래스와의 상호작용을 구현하는 방법에 대해 알아보았습니다. 감사합니다.