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

제네릭 타입을 사용하는 유틸리티 함수에서 객체의 특정 속성을 업데이트하고 새로운 객체를 반환하려 합니다.

코드:

interface User {
  id: number;
  name: string;
}

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

const user: User = { id: 1, name: "Kim" };
const updatedUser = updateProperty(user, "name", "Lee");

오류: `Type 'T' is not assignable to type 'T'. Type '{ [key: string]: any; }' is not assignable to type 'T'.` (컴파일 에러 발생)

시도: 반환 타입을 `any`로 지정하거나 `as T`로 타입 단언을 사용하여 해결했으나, 타입 안정성이 떨어지는 문제가 있습니다.

질문: 타입 단언을 사용하지 않고 제네릭 함수 내에서 계산된 속성 이름(Computed Property Name)을 사용하여 `T` 타입을 정확하게 반환하는 방법은 무엇입니까?

모든 이야기1465

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

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