타입 변수
`T`는 호출 시점에 결정되는 타입이므로 아무 조건이 없으면 내부 속성 접근이 제한됩니다.
제네릭은 여러 타입을 받을 수 있지만, 함수 내부에서 특정 속성을 써야 한다면 `extends`로 최소 조건을 선언해야 합니다.
`T`는 호출 시점에 결정되는 타입이므로 아무 조건이 없으면 내부 속성 접근이 제한됩니다.
`T extends Lengthwise`는 length 속성을 가진 값만 통과시키는 컴파일 규칙입니다.
`K extends keyof T`를 쓰면 객체에 실제 존재하는 키만 안전하게 받을 수 있습니다.
제약은 타입을 좁히는 것이 아니라 필요한 조건만 더해 원래 타입 정보를 보존합니다.
핵심제네릭 제약의 구성 요소은 각 요소의 관계와 선택 조건을 함께 읽어야 한다.