유틸리티

학습 키워드

  • 유틸리티

    • Partial

    • Required

    • Pick

    • Omit

    • Record

유틸리티

  • 타입스크립트가 자체적으로 제공하는 특수한 타입들

Partial

  • 특정 객체 타입의 모든 프로퍼티를 선택적 프로퍼티로 변환

  • 기존 객체 타입에 정의된 프로퍼티들 중 일부분만 사용할 수 있도록 도와주는 타입

type TPerson = {
  name: string;
  age: number;
  address: string;
};

const person: Partial<TPerson> = {
  name: '홍길동',
};

Required

  • 특정 객체 타입의 모든 프로퍼티를 필수(선택적이지 않은) 프로퍼티로 변환

  • 기존 객체 타입에 정의된 프로퍼티들 중 모든 속성을 필수로 사용해야하는 타입

type TCar = {
  make?: string;
  model?: string;
  year?: number;
};
const car1: Required<TCar> = {
  make: 'Toyota',
  model: 'Corolla',
  year: 2015,
};

Pick

  • 특정 객체 타입으로부터 특정 프로퍼티 만을 골라내는 타입

interface Post {
  title: string;
  tags: string[];
  content: string;
  thumbnailURL?: string;
}

const legacyPost: Pick<Post, 'title' | 'content'> = {
  title: '',
  content: '',
};

Omit

  • 특정 객체 타입으로부터 특정 프로퍼티 만을 제거하는 타입

interface Post {
  title: string;
  tags: string[];
  content: string;
  thumbnailURL?: string;
}

const noTitlePost: Omit<Post, 'title'> = {
  content: '',
  tags: [],
  thumbnailURL: '',
};

  • 속성 키가 Keys이고 속성 값이 Type인 객체 유형

  • 속성을 다른 유형에 매핑하는 데 사용할 수 있는 타입

interface CatInfo {
  age: number;
  breed: string;
}

type CatName = 'miffy' | 'boris' | 'mordred';

const cats: Record<CatName, CatInfo> = {
  miffy: { age: 10, breed: 'Persian' },
  boris: { age: 5, breed: 'Maine Coon' },
  mordred: { age: 16, breed: 'British Shorthair' },
};

🔗 참고

Last updated