[typescript] GraphQL-js에서의 타입 에러 핸들링

GraphQL-js는 JavaScript 언어로 작성된 GraphQL 서버를 구축하는데 사용되는 라이브러리입니다. 이 라이브러리를 사용하여 GraphQL 쿼리 및 뮤테이션을 처리할 때 발생할 수 있는 타입 에러를 효과적으로 핸들링하는 방법에 대해 살펴보겠습니다.

타입 에러란?

GraphQL에서 타입 에러는 주로 입력된 데이터가 예상한 스키마와 일치하지 않을 때 발생합니다. 예를 들어, GraphQL 쿼리에 필요한 필드가 누락되었거나 잘못된 데이터 타입이 전달된 경우에 타입 에러가 발생할 수 있습니다.

타입 에러 핸들링

GraphQL-js에서 타입 에러를 핸들링하기 위해서는 다음과 같은 방법을 사용할 수 있습니다:

1. 에러 타입 정의

GraphQL-js에서는 GraphQLError를 포함한 다양한 에러 타입을 제공합니다. 이러한 에러 타입을 활용하여 타입 에러를 구별하고 적절한 처리를 할 수 있습니다.

예를 들어, 다음은 사용자 지정 타입 에러를 정의하는 코드입니다:

class CustomGraphQLError extends GraphQLError {
  constructor(message: string) {
    super(message);
    this.name = 'CustomGraphQLError';
  }
}

2. 필드 레벨 에러 핸들링

GraphQL-js에서는 각 필드의 리졸버 함수에서 발생하는 타입 에러를 캐치하여 처리할 수 있습니다.

const resolvers = {
  Query: {
    user(parent, args, context, info) {
      if (!args.id) {
        throw new CustomGraphQLError('ID is required.');
      }
      // 다른 로직 처리
    },
  },
};

3. 전역 에러 핸들링

마지막으로, GraphQL 서버 레벨에서 전역 에러를 핸들링할 수 있습니다. 이를 통해 모든 리졸버 함수에서 발생하는 타입 에러를 일관되게 처리할 수 있습니다.

const server = new ApolloServer({
  typeDefs,
  resolvers,
  formatError: (error) => {
    if (error.originalError instanceof CustomGraphQLError) {
      return new Error('Custom error occurred');
    }
    return error;
  },
});

결론

GraphQL-js를 사용하여 GraphQL 서버를 개발할 때, 타입 에러를 적절하게 핸들링함으로써 클라이언트와의 상호작용을 보다 안정적으로 만들 수 있습니다. 에러 타입의 정의, 필드 레벨 핸들링, 그리고 전역 에러 핸들링을 적절히 활용하여 타입 에러에 대응하는 것이 중요합니다.

타입 에러 핸들링에 대한 더 자세한 내용은 GraphQL-js 공식 문서를 참고하시기 바랍니다.

참고 자료