key constraint

키 제약은 객체 타입과 키 타입을 한 묶음으로 묶는다

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는 두 입력을 하나의 타입 계약으로 묶어 오타 방지와 반환 타입 보존을 동시에 처리합니다.