TypeScript-섹션8. 타입 조작하기-맵드 타입(3)

손주완·2025년 7월 15일

Typescript Section8

목록 보기
4/5

맵드 타입 (Mapped Types)

요약

맵드 타입(mapped type)은 기존 객체 타입을 기반으로 새로운 객체 타입을 유연하게 생성할 수 있는 타입스크립트의 기능임. keyof, 인덱스드 엑세스 타입 등과 결합해 중복 없이 코드를 간결하게 유지할 수 있음.


기본 예시

interface User {
  id: number;
  name: string;
  age: number;
}

// 수정 가능한 필드를 선택적으로 만들고 싶을 때
type PartialUser = {
  [key in "id" | "name" | "age"]?: User[key];
};

이 맵드 타입은 다음과 같은 결과 타입이 됨:

{
  id?: number;
  name?: string;
  age?: number;
}

'keyof`와 결합

type PartialUser = {
  [key in keyof User]?: User[key];
};

keyof User"id" | "name" | "age"와 같기 때문에 위와 동일한 결과 타입이 생성됨.


읽기 전용 타입 만들기

type ReadonlyUser = {
  readonly [key in keyof User]: User[key];
};

→ 모든 프로퍼티를 readonly로 변환한 새 타입이 생성됨.


활용 예시

기존 타입을 기반으로:

  • 모든 프로퍼티를 선택적(optional) 으로 만들거나,
  • 모든 프로퍼티를 읽기 전용(readonly) 으로 만들거나,
  • 특정 키만 골라서 부분적으로 정의된 타입을 만들 수 있음.

이러한 방식으로 유지보수와 확장성이 매우 뛰어난 타입 정의가 가능해짐.


요약 정리

  • 맵드 타입은 반복되는 타입 정의를 자동화
  • keyof, 인덱스드 엑세스 타입 등과 함께 사용하면 강력한 타입 변환기가 됨
  • 실무에서 자주 사용되는 패턴임 (Partial, Readonly, Pick, Record 등이 전부 맵드 타입으로 구현되어 있음)

0개의 댓글