[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에서 다형성과 재사용성을 향상시킬 수 있으며, 유사한 동작의 다양한 클래스를 일반화하여 효율적으로 구현할 수 있습니다. 이를 통해 보다 유연하고 확장 가능한 코드를 작성할 수 있습니다.