[NestJS] Mapped types

Hocaron·2021년 12월 13일
1

NestJS

목록 보기
4/12

Mapped types

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

❗애플리케이션에서 @nestjs/swagger 패키지를 사용하는 경우 매핑된 유형에 대한 자세한 내용은 이 장을 참조하세요. 마찬가지로 @nestjs/graphql 패키지를 사용하는 경우 이 장을 참조하십시오. 두 패키지 모두 유형에 크게 의존하므로 다른 가져오기를 사용해야합니다.

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),
) {}
profile
기록을 통한 성장을

0개의 댓글