[typescript] GraphQL 스키마 정의하기

GraphQL은 강력한 타입 시스템을 지원하여 안전하고 확장 가능한 API를 만드는 데 도움이 됩니다. TypeScript와 함께 GraphQL을 사용하면 정적 타입 검사를 통해 높은 수준의 안정성을 확보할 수 있습니다. 이 포스트에서는 TypeScript로 GraphQL 스키마를 정의하는 방법에 대해 알아보겠습니다.

환경 설정

먼저, 필요한 패키지를 설치해야 합니다. 아래 명령어를 사용하여 graphql@types/graphql 패키지를 설치합니다.

npm install graphql @types/graphql

GraphQL 스키마 정의

GraphQL 스키마는 데이터 그래프의 구조를 정의합니다. TypeScript에서 GraphQL 스키마를 정의하기 위해 먼저 graphql 모듈에서 GraphQLSchema, GraphQLObjectType, GraphQLString 등을 가져와야 합니다.

다음은 간단한 예제입니다. BookAuthor 두 가지 유형을 가진 간단한 GraphQL 스키마를 정의하는 방법을 보여줍니다.

import { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLID } from 'graphql';

const AuthorType = new GraphQLObjectType({
  name: 'Author',
  fields: {
    id: { type: GraphQLID },
    name: { type: GraphQLString },
  },
});

const BookType = new GraphQLObjectType({
  name: 'Book',
  fields: {
    id: { type: GraphQLID },
    title: { type: GraphQLString },
    author: { type: AuthorType },
  },
});

const QueryType = new GraphQLObjectType({
  name: 'Query',
  fields: {
    book: {
      type: BookType,
      resolve: () => {
        // 책 데이터를 가져오는 로직
      },
    },
  },
});

const schema = new GraphQLSchema({
  query: QueryType,
});

위 코드에서 Author, Book, 그리고 Query 유형을 정의하고, 이를 사용하여 GraphQLSchema를 만듭니다. 이러한 유형과 스키마를 사용하면 GraphQL API의 기본 구조와 동작을 정의할 수 있습니다.

정적 타입 검사

TypeScript를 사용하면 위의 코드에서 어떤 필드가 있는지, 어떤 유형을 가져야 하는지 등을 정확하게 확인할 수 있습니다. 이는 코드를 작성하거나 리팩토링할 때 매우 유용합니다.

마치며

이제 TypeScript와 함께 GraphQL 스키마를 어떻게 정의하는지 알아보았습니다. 정적 타입 검사를 통해 안전하고 확장 가능한 GraphQL API를 구축하는 데 도움이 됩니다. 추가적인 기능을 구현하거나 복잡한 유형을 정의할 때에도 이러한 기본적인 원리를 활용할 수 있습니다.

더 많은 정보는 GraphQL 공식 문서를 참조하세요.