기본 패턴
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