맵드 타입: 이미 정의된 타입을 가지고 새로운 타입을 생성할 때 사용하는 타입 문법
type HeroNames = "capt" | "hulk" | "thor";
type HeroAttendance = {
[Name in HeroNames]: boolean;
}
→ HeroNames 타입에 맵드 타입 문법을 적용하여 HeroAttendance라는 새로운 타입을 정의
→ HeroNames 타입은 영웅 이름을 의미하는 3개의 유니언 타입
→ HeroAttendance 타입은 이 영웅 이름을 속성 이름으로 하고 영웅 출석 여부를 해당 속성 값으로 정의

이미 정의된 타입으로 새로운 타입을 생성하려면
[Name in HeroNames]형태의 문법을 사용해야함
for in 반복문을 사용한 것처럼 HeroNames에 있는 타입을 하나씩 순회하여 속성 값 타입과 연결함for in 반복문은 객체의 키, 값 쌍을 순회할 때 흔히 사용하는 문법
let obj = {
a: 10,
b: 20,
c: 30,
};
for (let key in obj) {
console.log(key);
}

위와 같은 원리로 HeroAttendance 타입의 선언 부분을 보면 [Name in HeroNames]: boolean; 코드가 왜 다음과 같은지 이해할 수 있음
{
capt: booelan;
hulk: booelan;
thor: booelan;
}