wam
w__am 개발노트
wam
  • 분류 전체보기 (165)
    • CS 지식 (10)
      • 자료구조 (0)
      • 알고리즘 (0)
      • 컴퓨터 구조 (0)
      • 운영체제 (0)
      • 네트워크 (7)
      • 데이터베이스 (0)
      • 디자인 패턴 (3)
    • Frontend (131)
      • Three.js (64)
      • NPM (1)
      • Nest.js (19)
      • React (10)
      • Apollo (7)
      • TypeScript (2)
      • JavaScript (12)
      • HTML, CSS (1)
      • Jest (3)
      • E2E (5)
      • Cypress (7)
    • Database (12)
      • TypeORM (12)
    • IT 지식 (8)
      • 클라우드 서비스 (3)
      • 네트워크 (1)
      • 데이터 포맷 (2)
      • 기타 (2)
    • IT Book (2)
    • 유용한 사이트 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 🐱 Github

인기 글

태그

  • three.js 구성 요소
  • 함수의 범위
  • type-graphql
  • threejs 개발 할 때 도움을 줄 수 있는 유틸리티
  • getelapsedtime()
  • mapped types
  • gridhelper
  • reactive variables
  • isabstract
  • 스코프
  • math.sin()
  • 함수 표현식
  • react 성능 최적화
  • 초기 환경설정
  • joi 에러
  • axeshelper
  • 원형적인 움직임
  • Decorators
  • getdelta()
  • Interface
  • 오프-프레미스(off-premise) 방식
  • math.cos()
  • 데이터 포맷
  • 디자인 패턴
  • e.preventdefault()
  • 함수 선언문
  • 렌더링 성능 최적화
  • 삼각함수
  • API
  • 함수 리터럴

최근 글

관리자

글쓰기 / 스킨편집 / 관리자페이지
hELLO · Designed By 정상우.
wam

w__am 개발노트

GraphQL 스키마를 정의할 때 매우 유용한 도구 MapperType
Frontend/Nest.js

GraphQL 스키마를 정의할 때 매우 유용한 도구 MapperType

2024. 7. 29. 22:25

 

@nestjs/graphql

  • NestJS의 GraphQL 모듈에서 제공하는 패키지이다.
  • GraphQL 스키마를 작성하고 관리하는 데 유용한 여러 유틸리티를 제공한다.

 

 

MapperType

  • MapperType이라는 용어는 NestJS 또는 일반적인 GraphQL 패키지에서 널리 사용되는 표준 용어는 아니다.
  • 일반적으로 '매퍼(mapper)'는 하나의 데이터 형식을 다른 형식으로 변환하는 기능을 의미이다.
  • 특히 GraphQL이나 TypeScript에서 데이터 타입을 변환하거나 특정 필드만 선택할 때 사용하는 유틸리티 타입들을 가리킬 수 있다.

 

 

1. PartialType

import { PartialType } from '@nestjs/graphql';
import { CreateUserInput } from './create-user.input';

export class UpdateUserInput extends PartialType(CreateUserInput) {}
  • 기존 타입의 모든 필드를 선택 사항(optional)으로 만드는 데 사용된다.
  • 업데이트 요청 시 모든 필드를 요구하지 않고, 일부 필드만 수정할 수 있게 할 때 유용하다.
  • export 하고 모든 field가 required가 아닌 class를 만들어 준다.

 

 

2. PickType

import { PickType } from '@nestjs/graphql';
import { User } from './user.model';

export class PublicUser extends PickType(User, ['id', 'name'] as const) {}
  • 기존 타입에서 특정 필드만 선택하여 새로운 타입을 만드는 데 사용된다.
  • 주로 데이터를 선택적으로 노출해야 할 때 유용하다.
  • input type에서 몇 가지 property를 선택해 class를 만들어 준다.

 

 

3. OmitType

import { OmitType } from '@nestjs/graphql';
import { User } from './user.model';

export class SafeUser extends OmitType(User, ['password'] as const) {}
  • 기존 타입에서 특정 필드를 제외한 새로운 타입을 만드는 데 사용된다.
  • 특정 필드를 제외한 나머지 필드를 사용하고자 할 때 유용하다.
  • base class에서 class를 만드는데 몇 몇 field를 제외하고 만들어 준다.

 

 

4. IntersectionType

import { ObjectType, Field, Int } from '@nestjs/graphql';

@ObjectType()
class Person {
  @Field()
  name: string;

  @Field(() => Int)
  age: number;
}

@ObjectType()
class Address {
  @Field()
  street: string;

  @Field()
  city: string;
}
import { IntersectionType } from '@nestjs/graphql';

@ObjectType()
class PersonWithAddress extends IntersectionType(Person, Address) {}
  • 여러 GraphQL 객체 타입을 결합하여 새로운 타입을 생성하는 데 사용된다.
  • TypeScript의 & 연산자(교차 타입)와 유사하게 동작하며, 여러 객체의 속성을 하나로 합치는 역할을 한다.

 

 

저작자표시 변경금지

'Frontend > Nest.js' 카테고리의 다른 글

NestJS의 기본 모듈 구조  (0) 2024.07.30
GraphQL 스키마에서 enum 타입을 정의할 때 사용, registerEnumType  (0) 2024.07.29
유저 프로필 수정 시 Mapped types 주의할 점  (0) 2024.06.21
GraphQL 스키마를 정의할 때 사용되는 데코레이터  (0) 2024.06.21
InputTypes and ArgumentTypes  (0) 2024.06.21
    'Frontend/Nest.js' 카테고리의 다른 글
    • NestJS의 기본 모듈 구조
    • GraphQL 스키마에서 enum 타입을 정의할 때 사용, registerEnumType
    • 유저 프로필 수정 시 Mapped types 주의할 점
    • GraphQL 스키마를 정의할 때 사용되는 데코레이터
    wam
    wam

    티스토리툴바