[typescript] 제네릭 인터페이스를 사용하여 다양한 데이터 처리 방식 구현하기

TypeScript는 JavaScript에 타입을 추가한 언어이며, 제네릭 기능을 통해 데이터 타입에 대한 추상화를 가능하게 합니다. 이를 통해 코드의 유연성을 높일 수 있으며, 재사용 가능한 구성 요소를 쉽게 작성할 수 있습니다.

제네릭 인터페이스란?

제네릭 인터페이스는 인터페이스 내에서도 타입 파라미터를 사용할 수 있도록 해주는 기능입니다. 이를 통해 다양한 타입의 데이터를 다루는 컴포넌트를 만들 수 있으며, 코드의 재사용성을 높일 수 있습니다.

아래는 제네릭 인터페이스의 기본 구조입니다.

interface SomeInterface<T> {
  value: T;
  print: (value: T) => void;
}

위 코드에서 SomeInterface는 제네릭 타입 T를 포함하고 있으며, value property와 print 메소드는 이 타입을 활용합니다.

예시: 스택(Stack) 구현하기

제네릭 인터페이스를 사용하여 스택을 구현해보겠습니다. 스택은 나중에 추가된 데이터가 먼저 제거되는 자료구조입니다.

interface Stack<T> {
  push: (value: T) => void;
  pop: () => T | undefined;
}

class CustomStack<T> implements Stack<T> {
  private items: T[] = [];

  push(value: T) {
    this.items.push(value);
  }

  pop() {
    return this.items.pop();
  }
}

const numberStack: Stack<number> = new CustomStack<number>();
numberStack.push(1);
numberStack.push(2);
console.log(numberStack.pop()); // Output: 2

위의 예시에서 CustomStack 클래스는 제네릭 인터페이스 Stack을 구현하고 있습니다. 이를 통해, 숫자를 요소로 갖는 스택을 생성하고 활용하는 예시를 확인할 수 있습니다.

결론

제네릭 인터페이스를 활용하면 코드의 재사용성을 높일 수 있으며, 타입 안정성을 보장할 수 있습니다. TypeScript에서 제네릭을 적극적으로 활용하여, 다양한 데이터를 다루는 유연하고 안정적인 코드를 작성할 수 있습니다.

참고 자료: TypeScript 공식 문서 - 제네릭