제네릭은 호출 시점 타입을 입력에서 반환까지 보존한다

T는 함수가 호출될 때 정해지고, 매개변수와 반환값에 같은 타입 정보가 이어진다.

1
Call value
인자로 들어온 실제 타입을 관찰
2
Infer T
문자열이면 T=string, 숫자면 T=number
3
Apply
함수 전체의 T 자리에 같은 타입 대입
4
Return
반환값도 같은 타입 정보 유지
점검기준
extends필요한 속성이나 형태만 제한
keyof객체에 실제 존재하는 key만 허용
any와 차이타입 정보를 포기하지 않고 재사용

핵심 제네릭은 여러 타입에 같은 로직을 쓰되, 호출자가 준 타입 정보를 잃지 않게 한다.