어렵습니다 ㅠㅠ 고민을 해도 못맞췄네요
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 인턴입니다.
rhkdtjd_12님, 주어진 코드 스니펫과 설명을 바탕으로 보아 타입스크립트의 맵드 타입(Mapped Types)을 이용한 타입 변환에 대해 질문하신 것 같습니다. 맵드 타입을 사용하여, 기존 객체의 키를 새로운 문자열 패턴으로 변환하면서 연관된 값의 타입도 변환하는 방법에 대해 고민하신 것으로 보입니다.
다행히, 이러한 종류의 타입스크립트 타입 변환 문제를 다루는 유사한 내용의 답변이 있어 해당 링크를 공유해드립니다.
위 링크에서는 객체의 키와 값을 이용하여 튜플 타입으로 변환하는 과정에 대한 질문과 그에 대한 답변이 제공되고 있습니다. 키를 변환하는 부분과 비슷한 맥락으로 AttributeGetters 타입을 변환할 때도 사용될 수 있는 기법이 설명되어 있으니 참고하시면 도움이 될 것입니다.
type ValuesAsUnionOfTuples = {
[K in keyof Values]: [K, Values[K]];
}[keyof Values];
위 코드 조각은 객체의 각 키(K)에 대하여 키와 해당 키의 값의 타입을 튜플로 매핑한 다음, 이를 유니온 타입으로 변환하는 예시입니다.
질문하신 내용과 관련하여, AttributeGetters 타입에서도 비슷한 맵드 타입을 사용하여 각 키 이름을 변환(Capitalize)하고, 해당 키의 타입으로 함수 시그니처를 생성하는 로직을 구성할 수 있습니다. 즉, Attributes 인터페이스의 각 키를 가져와서 ‘get’ 접두사와 함께 대문자로 시작하는 새로운 키 이름으로 매핑하고, 해당 키의 타입에 해당하는 값(Attributes[key])으로 함수 타입을 만드는 것이 핵심 과제입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
이게 된다는걸 어떻게 판단할 수 있나요?
0
62
2
연습문제 강의 확인 부탁드립니다.
0
80
2
object key 질문드립니다.
0
66
1
행운 닉네임 등록부탁드립니다!
0
136
2
각 강의에 대한 설명 링크 404에러
0
71
2
행운문제 닉네임 등록 요청드립니다
0
65
2
블로그 링크 문제
1
124
1
제네릭과 사용자 정의 타입 가드에 관한 질문
1
168
1
제네릭 타입 제한을 하는것이 어떤 장점이 있을까요 ?
1
141
1
행운문제 닉네임 등록 신청합니다!
0
112
2
행운문제 테스트 유저 이름 입력 요청
0
129
2
행운문제 닉네임 입력 요청
1
158
2
행운문제 테스트 유저 이름 입력 요청
1
140
2
설명 블로그에 대한 질문
2
129
3
행운동전!
0
115
2
행운문제 테스트 유저 이름 입력 요청
0
122
1
행운 테스트 문제 400 에러
0
177
2
행운 테스트 문제 (존재하지 않는 유저입니다.)
1
203
2
행운테스트 동전이용!!
0
209
2
연습문제 링크 이슈
2
223
3
화살표 함수와 일반 함수의 매개변수 추론 관련
1
310
2
제네릭을 활용해서 정답을 맞춰보았습니다!
1
333
2
cache 강의 질문
1
213
1
Record의 제네릭은 자동적으로 바뀌나요?
0
383
2





