GraphQL은 강력한 타입 시스템을 지원하여 안전하고 확장 가능한 API를 만드는 데 도움이 됩니다. TypeScript와 함께 GraphQL을 사용하면 정적 타입 검사를 통해 높은 수준의 안정성을 확보할 수 있습니다. 이 포스트에서는 TypeScript로 GraphQL 스키마를 정의하는 방법에 대해 알아보겠습니다.
환경 설정
먼저, 필요한 패키지를 설치해야 합니다. 아래 명령어를 사용하여 graphql
과 @types/graphql
패키지를 설치합니다.
npm install graphql @types/graphql
GraphQL 스키마 정의
GraphQL 스키마는 데이터 그래프의 구조를 정의합니다. TypeScript에서 GraphQL 스키마를 정의하기 위해 먼저 graphql
모듈에서 GraphQLSchema
, GraphQLObjectType
, GraphQLString
등을 가져와야 합니다.
다음은 간단한 예제입니다. Book
과 Author
두 가지 유형을 가진 간단한 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 공식 문서를 참조하세요.