[TS] Utility Types

cabbage·2023년 2월 1일

TS

목록 보기
4/4
post-thumbnail

Utility Types

  • 공통 타입 변환을 편리하게 해주는 타입스크립트의 유틸리티 타입
  • 기존의 타입들을 변형해서 변형된 타입을 만들어주는 역할을 한다.
  • 코드 가독성을 위해 자주 사용한다.

Partial, Required, Pick, Omit, Record 타입에 대해 알아 보자.

Partial Type

Partial 타입은 타입의 모든 속성을 선택사항으로 바꿔준다.

interface IProfile {
  name: string;
  age: number;
  school: string;
  hobby?: string;
}

// Partial 타입
type partial = Partial<IProfile>;

  • Partial 타입을 확인하면 모든 속성이 선택사항으로 변경된 것을 확인할 수 있다.
  • partial의 name, age, school, hobby 속성의 값들은 없어도 된다.

Required Type

Required 타입은 모든 속성을 필수사항으로 바꿔 준다. Partial 타입과 반대 역할이다.

interface IProfile {
  name: string;
  age: number;
  school: string;
  hobby?: string;
}

type required = Required<IProfile>;

  • IProfile의 hobby 속성이 선택사항이 아닌 필수사항으로 변경된 것을 확인할 수 있다.
  • required의 name, age, school, hobby 속성의 값들은 필수적으로 있어야 한다.

Pick Type

Pick 타입은 원하는 속성만 뽑아서 타입으로 만들고 싶을 때 사용한다.

interface IProfile {
  name: string;
  age: number;
  school: string;
  hobby?: string;
}

type myPick = Pick<IProfile, "name" | "hobby">;

  • myPick 타입에는 name, hobby? 속성만 있는 것을 확인할 수 있다.

Omit Type

Omit 타입은 지정한 속성만 생략해서 사용하고 싶을 때 사용한다.

interface IProfile {
  name: string;
  age: number;
  school: string;
  hobby?: string;
}

type myOmit = Omit<IProfile, "school">;

  • myOmit 타입에는 school 속성을 제외한 나머지 속성들이 존재하는 것을 확인할 수 있다.

Record Type

Record 타입은 유틸리티 타입 속성을 다른 타입으로 매핑할 때 사용한다. Record<Key, Type> 형태로 사용하며, Key로 들어온 타입을 Type 값을 가지는 타입으로 만들 수 있다.

interface IProfile {
  name: string;
  age: number;
  school: string;
  hobby?: string;
}

type name = "캐비지" | "cabbage" | "태윤";
type myProfile = Record<name, IProfile>;

  • 유니온 타입을 Key로 받고, 각각의 값을 IProfile 타입으로 매핑하였다.

정리

  • Partial 타입은 모든 속성을 선택사항으로 바꾸는 타입이다.
  • Required 타입은 모든 속성을 필수사항으로 바꾸는 타입이다.
  • Pick 타입은 원하는 속성을 뽑아서 타입을 만들고 싶을 때 사용한다.
  • Omit 타입은 지정한 속성을 제외한 타입을 만들고 싶을 때 사용한다.
  • Record 타입은 Key로 들어온 타입을 Type 값을 갖는 타입으로 만들고 싶을 때 사용한다.
profile
캐비지 개발 블로그입니다. :)

0개의 댓글