키 제약은 객체 타입과 키 타입을 한 묶음으로 묶는다
K extends keyof T는 아무 문자열이나 받지 않고, 실제 객체
타입 T에 존재하는 속성 이름만 고르게 만드는 장치입니다.
객체 형태
T는 호출자가 넘긴 객체의 실제 속성 구조를 보존합니다.
허용 키
keyof T는 "name" | "age" 같은 키
유니온을 만듭니다.
반환 타입
T[K]는 선택한 키의 값 타입으로 결과를 좁힙니다.
getProperty 타입 안전성 분해
| 순서 | 역할 | 타입 신호 | 검사 효과 |
|---|---|---|---|
| 01 | 객체 입력 | obj: T |
객체의 구체 속성 목록을 타입 변수에 담아 호출부 정보를 잃지 않습니다. |
| 02 | 키 입력 | key: K |
키도 별도 타입 변수로 받아 선택한 속성 이름을 추론하게 합니다. |
| 03 | 키 제약 | K extends keyof T |
객체 타입에 없는 문자열을 컴파일 단계에서 바로 거절합니다. |
| 04 | 값 접근 | obj[key] |
접근 가능한 키임이 보장되므로 색인 접근이 안전해집니다. |
| 05 | 결과 타입 | T[K] |
선택한 키에 맞춰 문자열 또는 숫자 결과가 따라옵니다. |
호출부에서 보이는 변화
-
getProperty(person, "name")은string으로 추론됩니다. -
getProperty(person, "age")는number로 추론됩니다. -
존재하지 않는 키는 문자열이어도
keyof T밖이라 실패합니다.
설계 원칙
키를 단순 string으로 받으면 객체와 키의 관계가
끊깁니다. K extends keyof T는 두 입력을 하나의 타입
계약으로 묶어 오타 방지와 반환 타입 보존을 동시에 처리합니다.