제네릭은 호출 시점 타입을 입력에서 반환까지 보존한다
T는 함수가 호출될 때 정해지고, 매개변수와 반환값에 같은 타입 정보가 이어진다.
Call value
인자로 들어온 실제 타입을 관찰
Infer T
문자열이면 T=string, 숫자면 T=number
Apply
함수 전체의 T 자리에 같은 타입 대입
Return
반환값도 같은 타입 정보 유지
| 점검 | 기준 |
|---|---|
| extends | 필요한 속성이나 형태만 제한 |
| keyof | 객체에 실제 존재하는 key만 허용 |
| any와 차이 | 타입 정보를 포기하지 않고 재사용 |
핵심 제네릭은 여러 타입에 같은 로직을 쓰되, 호출자가 준 타입 정보를 잃지 않게 한다.