Generic Constraint

Generic 제약과 narrowing 흐름

제약 없는 T는 어떤 멤버도 보장하지 않지만, T extends HasLength처럼 조건을 걸면 접근 가능한 표면이 열린다.

제네릭 타입에 안전한 조건을 붙이는 방식

constraint

제약 없음

T는 어떤 형태든 올 수 있어 length 같은 멤버를 보장하지 않는다.

형태 계약

extends { length: number }로 필요한 멤버만 요구한다.

호출 검증

조건을 만족하지 않는 인자는 컴파일 단계에서 거부된다.

타입 보존

입력 타입의 구체성은 유지하면서 안전한 멤버 접근을 허용한다.

미지 타입 T최소 제약멤버 접근호출 점검입력 타입 보존
최소 제약

extends 제약은 타입을 하나로 고정하는 것이 아니라 최소 조건을 요구하는 장치다. 재사용성과 안전성을 같이 얻는다.