T as relationship

제네릭 함수 타입 보존

제네릭 함수의 타입 변수는 아무 타입이나 허용한다는 뜻이 아니라 들어온 타입 정보를 결과까지 연결하는 이름입니다.

타입 변수

호출 때 결정

함수 이름 뒤의 T는 호출 시 실제 타입으로 대체되어 내부와 반환에 공유됩니다.

identity<T>(arg: T)
여러 변수

관계가 둘 이상일 때

입력 두 개의 타입이 서로 다르면 T와 U처럼 별도 타입 변수로 표현합니다.

<T, U>
제약 조건

필요한 속성 요구

length 같은 속성을 쓰려면 extends로 최소 조건을 먼저 선언합니다.

T extends { length: number }
keyof 연결

속성 이름을 안전하게

객체와 키를 함께 받을 때 K extends keyof T로 잘못된 키 접근을 막습니다.

K extends keyof T
any 대체 입력 타입을 잃지 않아야 한다면 any보다 제네릭을 먼저 떠올립니다.
추론 확인 호출부에서 타입 인자를 생략해도 원하는 타입으로 추론되는지 확인합니다.
제약 최소화 함수 내부에서 실제로 필요한 속성만 제약으로 요구합니다.

제네릭은 범용성을 얻으면서도 타입 정보를 버리지 않게 해 주는 함수 설계의 핵심 도구입니다.