Mapped types

장현욱(Artlogy)·2022년 11월 18일
0

Nest.js

목록 보기
16/18
post-thumbnail

Mapped types

CRUD와 같은 기능을 구축할 때 기본 항목 유형을 변형하여 사용하면 편리하다.
Nest는 이 작업을 보다 편리하게 만들기 위해 유형 변환을 수행하는 여러 유틸리티 함수를 제공하고 있다.

PartialType()

입력 유형의 모든 속성이 선택 사항으로 설정된 유형 (클래스)을 반환한다.
예를 들어 다음과 같은 create 유형이 있다고 가정해보자.

export class CreateCatDto {
  name: string;
  age: number;
  breed: string;
}

기본적으로 이러한 필드는 모두 필수이다. 동일한 필드를 사용하되 각 필드가 선택사항인 유형을 만들려면 클래스 참조(CreateCatDto)를 인수로 전달하는 PartialType()을 사용한다.

export class UpdateCatDto extends PartialType(CreateCatDto) {}

PickType()

입력 유형에서 속성 집합을 선택하여 새로운 유형(클래스)을 생성한다.

export class UpdateCatAgeDto extends PickType(CreateCatDto, ['age'] as const) {}

OmitType()

입력 타입에서 모든 속성을 선택한 다음 특정 키 세트를 제거하여 타입을 구성한다.

export class UpdateCatDto extends OmitType(CreateCatDto, ['name'] as const) {}

IntersectionType()

두 타입을 하나의 새로운 타입 (클래스)으로 결합한다.

export class CreateCatDto {
  name: string;
  breed: string;
}
export class AdditionalCatInfo {
  color: string;
}
export class UpdateCatDto extends IntersectionType(
  CreateCatDto,
  AdditionalCatInfo,
) {}

💡 활용

export class UpdateCatDto extends PartialType(
  OmitType(CreateCatDto, ['name'] as const),
) {}

0개의 댓글