본문으로 바로가기
COMMUNITY모든 이야기

면접 준비를 위해 제네릭을 활용한 유틸리티 함수를 구현하고 있습니다. 객체의 키를 통해 값을 안전하게 가져오는 함수를 만들려고 합니다.

코드:

function getValue<T extends object, K extends keyof T>(obj: T, key: K) {
  return obj[key];
}

const user = { id: 1, name: "Kim" };
const key = "name" as string;

console.log(getValue(user, key));

오류: Argument of type 'string' is not assignable to parameter of type 'keyof { id: number; name: string; }'.

시도: key 변수에 명시적으로 string 타입을 지정해 보았고, getValue 함수의 K 타입을 string으로 확장해 보았으나 타입 불일치 문제가 계속 발생했습니다.

질문: 런타임에 결정되는 string 타입의 변수를 제네릭 제약 조건이 걸린 key 파라미터에 안전하게 전달하려면 어떻게 타입을 정의해야 합니까?

모든 이야기1456

가벼운 안부부터 깊은 생각까지, 함께 나눠요.

글쓰기
총 1456개의 이야기
댓글