[TypeScript] λ§΅λ“œ νƒ€μž…(Mapped Type)

πŸ“„ λ§΅λ“œ νƒ€μž…(Mapped Type)

λ§΅λ“œ νƒ€μž…μ€ 기쑴에 μ •μ˜λ˜μ–΄ μžˆλŠ” νƒ€μž…μ„ μƒˆλ‘œμš΄ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•΄ μ£ΌλŠ” λ¬Έλ²•μž…λ‹ˆλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈ map() API ν•¨μˆ˜λ₯Ό νƒ€μž…μ— μ μš©ν•œ 것과 같은 효과λ₯Ό κ°€μ§‘λ‹ˆλ‹€.

πŸ“„ λ§΅λ“œ νƒ€μž… κΈ°λ³Έ 문법

{ [ P in  K ] : T }
{ [ P in  K ] ? : T }
{ readonly [ P in  K ] : T }
{ readonly [ P in  K ] ? : T }

πŸ“„ λ§΅λ“œ νƒ€μž… 예제

  • Heroes λŠ” Hulk, Capt, ThorλΌλŠ” ν‚€λ₯Ό μœ λ‹ˆμ˜¨ νƒ€μž…μœΌλ‘œ κ°€μ§„λ‹€.
  • HeroAges에 Heroes의 ν‚€μ˜ νƒ€μž…μ„ number둜 λ°”κΎΈλŠ” λ§΅λ“œ νƒ€μž… 문법을 μ μš©ν–ˆλ‹€.
  • μƒμˆ˜ agesλŠ” 킀값이 number인 HeroAgesλ₯Ό νƒ€μž…μœΌλ‘œ κ°€μ§„λ‹€.
type Heroes = "Hulk" | "Capt" | "Thor";
type HeroAges = { [K in Heroes]: number };
const ages: HeroAges = {
  Hulk: 33,
  Capt: 100,
  Thor: 1000,
};

좜처

Leave a comment