[typescript] 제네릭 타입을 사용하여 다양한 타입에 대해 유연하게 대응하는 방법

제네릭 타입은 TypeScript에서 강력하게 활용되는 기능 중 하나로, 클래스, 함수, 인터페이스 등에서 여러 종류의 타입을 유연하게 다룰 수 있게 해줍니다. 이를 통해 재사용성을 높이고 타입 안정성을 유지할 수 있습니다.

제네릭 타입 정의하기

제네릭 타입을 정의할 때는 다음과 같은 문법을 사용합니다:

function 함수명<T>(매개변수: T): T {
  // ...
}

여기서 T는 임의의 타입을 나타내는 식별자로, 실제 사용될 때에 구체적인 타입으로 치환됩니다.

제네릭 함수의 활용

예를들어, 배열을 입력으로 받아 그 중 가장 작은 값을 반환하는 제네릭 함수를 작성해보겠습니다.

function 최소값찾기<T>(배열: T[]): T {
  let 최소값 = 배열[0];
  for (let i = 1; i < 배열.length; i++) {
    if (배열[i] < 최소값) {
      최소값 = 배열[i];
    }
  }
  return 최소값;
}

let 숫자배열 = [3, 1, 7, 5];
let 최소숫자 = 최소값찾기(숫자배열);
console.log(최소숫자); // 1

제네릭 함수 최소값찾기는 숫자 배열 뿐만 아니라 문자열 배열, 또는 다른 자료형의 배열에도 적용할 수 있습니다.

제네릭 타입의 인터페이스

인터페이스에 제네릭 타입을 적용하여, 안정적인 타입 선언을 유지하면서 재사용 가능한 코드를 작성할 수 있습니다.

interface 상자<T> {
  : T;
}

let 숫자상자: 상자<number> = { : 10 };
let 문자열상자: 상자<string> = { : "안녕하세요" };

위 예제에서 상자 인터페이스는 T라는 제네릭 타입을 가지고 있어서 여러 종류의 값을 담을 수 있는 상자를 선언할 수 있습니다.

결론

제네릭 타입을 활용하면 코드의 재사용성을 높일 뿐만 아니라, 타입 안정성을 유지하면서 다양한 종류의 타입을 다룰 수 있습니다. 이는 TypeScript의 강력한 기능 중 하나이며, 프로젝트의 확장성과 유지보수성을 향상시키는데 큰 도움이 됩니다.

더 많은 정보는 TypeScript 공식 문서를 참고하실 수 있습니다.