제네릭 인터페이스는 TypeScript에서 재사용이 가능한 컴포넌트를 만들 때 유용합니다. 여러 클래스가 동일한 동작을 공유할 때, 제네릭 인터페이스를 사용하여 코드를 중복하지 않고 효율적으로 관리할 수 있습니다.
제네릭 인터페이스란 무엇인가요?
제네릭 인터페이스는 타입이 일반화된 상태로 선언된 인터페이스입니다. 즉, 특정 타입에 의존하지 않고 여러 다른 타입에서 유연하게 동작할 수 있도록 해줍니다.
한 예로, 동일한 동작을 하는 다른 클래스를 만들 때 제네릭 인터페이스를 사용하여 중복 코드를 줄일 수 있습니다. 예를 들어, 배열의 요소를 조작하는 메서드를 갖는 클래스들을 만들 때, 각각의 클래스마다 중복 코드를 작성하지 않고도 제네릭 인터페이스를 활용할 수 있습니다.
제네릭 인터페이스를 사용한 다른 클래스 구현하기
다음은 TypeScript에서 제네릭 인터페이스를 사용하여 다른 클래스를 구현하는 예제 코드입니다.
제네릭 인터페이스 정의:
interface Collection<T> {
items: T[];
addItem(item: T): void;
removeItem(item: T): void;
}
위 코드에서 Collection
은 제네릭 타입 T
를 인자로 받는 인터페이스입니다. items
는 제네릭 타입의 배열이며, addItem
과 removeItem
은 해당 타입의 요소를 추가하거나 제거하는 메서드입니다.
제네릭 인터페이스를 활용한 클래스 구현:
class NumberCollection implements Collection<number> {
items: number[] = [];
addItem(item: number) {
this.items.push(item);
}
removeItem(item: number) {
const index = this.items.indexOf(item);
if (index !== -1) {
this.items.splice(index, 1);
}
}
}
class StringCollection implements Collection<string> {
items: string[] = [];
addItem(item: string) {
this.items.push(item);
}
removeItem(item: string) {
const index = this.items.indexOf(item);
if (index !== -1) {
this.items.splice(index, 1);
}
}
}
위 코드에서 NumberCollection
과 StringCollection
클래스는 각각 Collection
인터페이스를 구현하고 있습니다. 이를 통해 동일한 동작을 하는 다른 클래스를 만들었음에도 불구하고 중복 코드를 최소화할 수 있습니다.
결론
TypeScript에서 제네릭 인터페이스를 활용하여 동일한 동작을 하는 다른 클래스를 구현하는 방법을 살펴보았습니다. 제네릭 인터페이스를 사용하면 코드의 재사용성을 높일 뿐 아니라 중복을 줄여 유지보수가 편리해집니다. 이를 통해 효율적으로 프로그래밍할 수 있게 됩니다.