TypeScript, 제네릭 제약조건에서 타입 매개변수 사용 (Using Type Parameters in Generic Constraints)

function getProperty<Type, Key extends keyof Type>(obj: Type, key: Key) {
  return obj[key];
}

위의 함수는 Type에 대한 객체를 첫번째 인자로 받고 두번째 인자로 Type에 대한 프로퍼티의 키를 받습니다. 예들들면 다음과 같습니다.

let x = { a: 1, b: 2, c: 3, d: 4 };
 
getProperty(x, "a");
getProperty(x, "m");

위의 코드에서 4번째 코드는 “m” 형식의 인수는 “a” | “b” | “c” | “d” 형식의 매개 변수에 할당될 수 없습니다.”라는 에러가 발생합니다.

참고로 상기 코드에서 keyof가 사용되었는데, keyof 연산자는 객체 타입에서 객체의 키 값들을 숫자나 문자열 리터럴 유니언을 생성합니다. 아래 타입 P는 "x" | "y"와 동일한 타입입니다.

type Point = { x: number; y: number };
type P = keyof Point;

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다