[typescript] GraphQL-js의 타입 정의 파일 작성 방법

GraphQL-js는 JavaScript로 작성된 GraphQL 서버를 구축하기 위한 라이브러리입니다. TypeScript를 사용하여 GraphQL-js를 개발할 때, 타입이 정의된 Type Definitions 파일을 작성하는 것은 매우 중요합니다. 타입 정의 파일을 작성하면 TypeScript 컴파일러가 코드의 타입을 검사할 수 있기 때문에 코드의 안정성을 보장할 수 있습니다.

Type Definitions 파일이란?

Type Definitions 파일이란 보통 .d.ts 확장자를 가진 TypeScript 파일로, JavaScript 라이브러리의 타입을 정의하는 데 사용됩니다.

GraphQL-js의 Type Definitions 파일은 GraphQL 스키마의 타입들을 TypeScript 타입으로 매핑하는 역할을 합니다. 이를 통해 GraphQL-js에 대한 타입 안정성을 확보할 수 있습니다.

GraphQL-js의 타입 정의 파일 작성 방법

GraphQL-js의 타입 정의 파일을 작성하기 위해서는 다음과 같은 단계를 따릅니다.

  1. 최상위 Type 정의: GraphQL 스키마의 최상위 타입인 Query, Mutation, Subscription을 먼저 정의합니다.

     // graphql-types.d.ts
     import { GraphQLSchema } from 'graphql';
    
     export interface MyGraphQLSchema extends GraphQLSchema {
       query: Query;
       mutation: Mutation;
       subscription: Subscription;
     }
    
  2. Query 및 Mutation 타입 정의: 각각의 Query와 Mutation에 대한 타입을 정의합니다.

     // graphql-types.d.ts
     interface Query {
       user: UserType;
       posts: PostType[];
     }
    
     interface Mutation {
       createUser(input: CreateUserInput): UserType;
       createPost(input: CreatePostInput): PostType;
     }
    
  3. 실제 GraphQL Type 정의: 실제 사용될 GraphQL Type들을 정의합니다.

     // graphql-types.d.ts
     interface UserType {
       id: number;
       name: string;
       email: string;
     }
    
     interface PostType {
       id: number;
       title: string;
       content: string;
     }
    
     interface CreateUserInput {
       name: string;
       email: string;
     }
    
     interface CreatePostInput {
       title: string;
       content: string;
     }
    
     interface Subscription {
       newPost: PostType;
     }
    
  4. 외부 라이브러리 타입 정의: 필요한 경우 외부 라이브러리의 타입을 가져오거나 정의하여 사용할 수 있습니다.

     // graphql-types.d.ts
     // External library type definition
     interface Context {
       db: DBConnection;
       user?: User;
     }
    

결론

GraphQL-js의 타입 정의 파일을 작성함으로써 TypeScript 프로젝트에서 GraphQL-js를 사용할 때 타입 안정성을 확보할 수 있습니다. 따라서 프로젝트의 유지보수성을 높이고 실수로 인한 버그를 줄일 수 있습니다.

이상으로 GraphQL-js의 타입 정의 파일 작성 방법에 대해 알아보았습니다. 해당하는 프로젝트에 맞게 타입 정의 파일을 작성하여 TypeScript와 GraphQL-js를 함께 사용해보세요.