인프런 커뮤니티 질문&답변

kql 1님의 프로필 이미지

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

08-03 Typescript 심화 타입 ( Utility, Generic)

Record 타입 질문

해결된 질문

작성

·

140

·

수정됨

0

 interface IProfile {

name: string;

age: number;

school: string;

hobby?: string;

}

 

type eee = "철수" | "영희" | "훈이";

type fff= Record<eee, IProfile>;

fff가 key가 철수,영희,훈이고 value가 IProfile 인것은 이해하는데, 이게 철수,영희,훈이가 뭔 타입을 말하는 건지 모르겠고,이게 뭔 의미인지도 잘 모르겠어요

답변 1

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! kql1님!

어떤 타입이 number 타입이라면, "사과"가 들어갈 수 없겠죠?!
마찬가지로 어떤 타입이 string 타입이라면, 3은 들어갈 수 없을거예요!

여기서 number | string 타입은 3도 가능하고, "사과"도 가능해요.
이런 타입을 우리는 Union 타입이라고 불러요(유니온 타입)

마지막으로 string 타입을 조금 더 살펴보면,
어떤 타입이 string 타입이라면, 모든 string이 다 들어갈 수 있어요
하지만, 어떤 타입이 "철수" | "영희" | "훈이" 타입이라면, string 중에서도 "철수" 또는 "영희" 또는 "훈이"만 입력 가능하고 "맹구"는 입력할 수 없겠죠?!

결과적으로 질문을 다시 돌아보면

fff가 key가 철수,영희,훈이고 value가 IProfile 인것은 이해하는데,

key가 "철수" | "영희" | "훈이" 라는 뜻은, key에 맹구는 못 들어간다는 뜻이에요!

type eee = "철수" | "영희" | "훈이";
type fff= Record<eee, IProfile>;

const myfff: fff {
   "철수": {
      name: "사과",
      age: ...,
      school: ...,
      hobby: ...
   },
   "영희": {
      name: ...,
      ...,
   },

   "맹구": { // 이거 안됨

   }
}
kql 1님의 프로필 이미지

작성한 질문수

질문하기