맵드 타입이란 기존에 정의되어 있던 타입을 새로운 타입으로 변환해 주는 문법을 의미한다. 마치 자바스크립트 map() API 함수를 타입에 적용한 것과 같은 효과를 가진다.
변환전 타입을 map함수로 새로운 타입을 뽑아낸다.라는 관점으로 생각하면 된다.
위 코드는 3개의 객체를 요소로 가진 배열 arr에 map을 적용한 코드이다. 배열의 각 요소를 순회하여 객체에서 title값을 가져와 새로운 배열로 리턴해준다.
K에 있는 값을 in 오퍼레이터로 순회한 값을 P로 두고 P는 T로 변환한다.
type Heroes = 'Hulk' | 'Capt' | 'Thor'
type HeroAges = {
[ K in Heroes]: number
}
const ages: HeroAges = {
Hulk: 33,
Capt: 100,
Thor: 1000
}
Heroes타입을 유니온을 사용하여 3개의 히어로를 묶었다.
HeroAges타입을 정의할 때 Hulk: number, Capt:number, Thor: number이런식으로 나열할 수 있지만 맵드 타입으로 해결가능하다.
Heroes타입을 순회하여 각 요소를 K에 놓고 K 타입을 number타입으로 변환해준다.