TypeScript제네릭과 타입 조작

제네릭 기초

입력 타입과 출력 타입의 관계를 보존하는 재사용 가능한 함수와 자료구조를 만들기 위한 제네릭의 핵심을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

ts
function identity<T>(value: T): T {
  return value;
}

설명

  • 제네릭은 특정 타입 하나로 고정하지 않고, 타입 자체를 매개변수처럼 받아 관계를 표현하는 방법입니다.
  • identity<T>(value: T): T는 "들어온 타입이 그대로 나간다"는 정보를 유지합니다.
  • 그래서 any처럼 타입 정보를 버리지 않으면서도, 여러 타입에 재사용 가능한 함수를 만들 수 있습니다.
  • 제네릭은 함수뿐 아니라 인터페이스, 타입 별칭, 클래스에도 적용할 수 있습니다.
  • 핵심은 제네릭이 단순한 "타입 구멍"이 아니라, 입력과 출력의 연결 관계를 보존하는 장치라는 점입니다.

짧은 예제

ts
function first<T>(items: T[]): T | undefined {
  return items[0];
}

const n = first([1, 2, 3]);
const s = first(["a", "b"]);

빠른 정리

표현의미
<T>타입 매개변수 선언
value: T입력 타입이 T
): T반환 타입도 같은 T
장점재사용성과 타입 정보 유지
비교any보다 훨씬 안전

주의할 점

제네릭은 "어떤 타입이든 가능"하다는 뜻이지, "아무 속성이나 써도 된다"는 뜻은 아닙니다. 내부에서 특정 속성이 필요하면 제약 조건을 추가해야 합니다.

참고 링크

1 sources