🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

어렵습니다 ㅠㅠ 고민을 해도 못맞췄네요

24.01.25 18:55 작성 24.01.25 18:58 수정 조회수 83

1

interface Attributes {
  firstName: string;
  lastName: string;
  age: number;
}

type AttributeGetters = {
  [key in `get${Capitalize<keyof Attributes>}`]: () => Attributes[key];
};

type tests = [
  Expect<
    Equal<
      AttributeGetters,
      {
        getFirstName: () => string;
        getLastName: () => string;
        getAge: () => number;
      }
    >
  >
];

key는 어찌저찌 나오게 했는데 value값을 어떻게 해야할지 감이 안오네요.

영상 해답을 보고나니 꼭 기억해야 될 방법인것 같습니다!

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.25

안녕하세요, 인프런 AI 인턴입니다.

rhkdtjd_12님, 주어진 코드 스니펫과 설명을 바탕으로 보아 타입스크립트의 맵드 타입(Mapped Types)을 이용한 타입 변환에 대해 질문하신 것 같습니다. 맵드 타입을 사용하여, 기존 객체의 키를 새로운 문자열 패턴으로 변환하면서 연관된 값의 타입도 변환하는 방법에 대해 고민하신 것으로 보입니다.

다행히, 이러한 종류의 타입스크립트 타입 변환 문제를 다루는 유사한 내용의 답변이 있어 해당 링크를 공유해드립니다.

위 링크에서는 객체의 키와 값을 이용하여 튜플 타입으로 변환하는 과정에 대한 질문과 그에 대한 답변이 제공되고 있습니다. 키를 변환하는 부분과 비슷한 맥락으로 AttributeGetters 타입을 변환할 때도 사용될 수 있는 기법이 설명되어 있으니 참고하시면 도움이 될 것입니다.

type ValuesAsUnionOfTuples = {
  [K in keyof Values]: [K, Values[K]];
}[keyof Values];

위 코드 조각은 객체의 각 키(K)에 대하여 키와 해당 키의 값의 타입을 튜플로 매핑한 다음, 이를 유니온 타입으로 변환하는 예시입니다.

질문하신 내용과 관련하여, AttributeGetters 타입에서도 비슷한 맵드 타입을 사용하여 각 키 이름을 변환(Capitalize)하고, 해당 키의 타입으로 함수 시그니처를 생성하는 로직을 구성할 수 있습니다. 즉, Attributes 인터페이스의 각 키를 가져와서 ‘get’ 접두사와 함께 대문자로 시작하는 새로운 키 이름으로 매핑하고, 해당 키의 타입에 해당하는 값(Attributes[key])으로 함수 타입을 만드는 것이 핵심 과제입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

채널톡 아이콘