728x90

TypeScript 와 Graphql 의 type 선언 차이

import { Resolver, Query, Args } from '@nestjs/graphql';
import { Restaurant } from './entities/restaurant.entity';

@Resolver((of) => Restaurant)
export class RestaurantResolver {
  // graphql 에서 list를 명시하는방법
  @Query((returns) => [Restaurant])
  // typescript 에서 list를 명시하는 방법
  restaurants(@Args('veganOnly') veganOnly: boolean): Restaurant[] {
    return [];
  }
}

위의 코드를 살펴보겠습니다.

Query 안의 return 을 보시면 괄호로 Restaurant 를 감싸고 있습니다.
이것은 GraphQL 의 리스트를 명시하는 방법입니다.

그와 반대로 Restaurant[] 는 Typescript 가 리스트를 명시하는 방법입니다.

다음으로 알아볼것은

restaurants(@Args('veganOnly') veganOnly: boolean): Restaurant[] {
    return [];
  }

이부분 입니다.

Nestjs에서 뭔가가 필요하다면 항상 요청해야 합니다.
Argument를 요청합니다. @Args('veganOnly') 는 GraphQL을 위한것이고 그뒤에 veganOnly: boolean 은 Typescript를 위한것 입니다.

http://localhost:3000/graphql

Docs를 살펴보면 Arguments가 생성되었고 type도 Boolean 으로 잘 들어갔습니다.

마지막으로 Query를 날려보겠습니다.

github 참고

728x90

'Side > uber-eats' 카테고리의 다른 글

TypeORM setup 과 Nestjs Config  (0) 2021.05.23
NestJs Validating ArgsTypes  (0) 2021.05.23
Nestjs - InputTypes and ArgumentTypes  (0) 2021.05.22
Nestjs - ObjectType  (0) 2021.05.22
Nestjs + react Day1  (0) 2021.05.19