[typescript] 제네릭 인터페이스를 활용하여 유사한 동작의 다양한 클래스 구현하기
코드를 모듈화하고 재사용성을 높이기 위해 TypeScript에서 제네릭 인터페이스를 사용할 수 있습니다. 제네릭 타입은 함수나 클래스, 인터페이스를 정의할 때 사용하는 타입 변수로, 여러 타입에 대해 동작을 일반화할 수 있도록 도와줍니다.
제네릭 인터페이스 정의하기
제네릭 인터페이스는 interface
키워드 뒤에 <T>
와 같이 타입 변수를 정의하여 사용할 수 있습니다. 이렇게 정의한 타입 변수는 인터페이스 안에서 타입으로서 역할을 하게 됩니다.
interface Box<T> {
value: T;
}
// Box 인터페이스 사용 예시
const numberBox: Box<number> = { value: 10 };
const stringBox: Box<string> = { value: "Hello, World!" };
위 예시에서 Box
인터페이스는 제네릭 타입 T
를 사용하여 value
속성의 타입을 동적으로 정의할 수 있게 되었습니다.
다양한 클래스 구현하기
제네릭 인터페이스를 사용하여 유사한 동작을 하는 다양한 클래스를 간단히 구현할 수 있습니다. 예를 들어, 과일 상자를 다루는 클래스를 구현해보겠습니다.
class FruitBox<T> implements Box<T> {
value: T;
constructor(value: T) {
this.value = value;
}
inspect(): void {
console.log(`This box contains ${this.value}`);
}
}
// 과일 상자 클래스 사용 예시
const appleBox = new FruitBox("Apple");
appleBox.inspect(); // 출력: This box contains Apple
const bananaBox = new FruitBox("Banana");
bananaBox.inspect(); // 출력: This box contains Banana
위 예시에서 FruitBox
클래스는 Box
인터페이스를 구현하면서, 제네릭 타입 T
를 이용하여 과일의 종류에 따라 타입이 동적으로 정의됩니다.
제네릭 인터페이스를 활용하여 유사한 동작의 다양한 클래스를 효율적으로 구현할 수 있으며, 이를 통해 코드의 재사용성과 유지보수성을 높일 수 있습니다.
결론
제네릭 인터페이스를 통해 TypeScript에서 다형성과 재사용성을 향상시킬 수 있으며, 유사한 동작의 다양한 클래스를 일반화하여 효율적으로 구현할 수 있습니다. 이를 통해 보다 유연하고 확장 가능한 코드를 작성할 수 있습니다.