Generic 제약 루프

제약과 결과 보존

T extends ...는 입력을 제한하려는 문법이면서, 함수 내부에서 안전하게 쓸 수 있는 속성과 반환 타입의 정밀도를 함께 결정합니다.

1

함수가 실제로 쓰는 멤버 확인

내부에서 length, id, 생성자 호출처럼 필요한 접근을 먼저 적습니다.

2

가장 작은 제약 만들기

필요한 속성만 가진 인터페이스나 keyof T로 허용 범위를 좁힙니다.

3

입력의 구체 타입 유지

제약 타입 대신 T를 유지해 호출 결과를 보존합니다.

4

오류 메시지로 제약 검증

거절된 값과 제약 범위를 함께 조정합니다.

제약의 모양

T extends Lengthwise K extends keyof T new (...) => T

함수가 실제로 사용하는 능력만 요구하고, 호출자가 넣은 타입 정보는 반환까지 이어집니다.

주의할 냄새

T extends object Record<string, any>

너무 넓은 제약은 함수 내부의 접근을 충분히 설명하지 못합니다. 필요한 키와 값의 형태를 더 구체화합니다.

제약과 결과 보존 판단 질문

이 제약이 없다면 함수 내부에서 어떤 접근이 위험해지는지 말할 수 있어야 타당한 제약입니다.