[typescript] 타입스크립트와 GraphQL을 함께 사용하는 클라이언트 개발 방법

GraphQL은 API를 위한 쿼리 언어이자 런타임 환경 입니다. 타입스크립트는 정적 타입 검사를 지원하는 JavaScript의 확장 버전으로, GraphQL 클라이언트 개발에 이점을 제공합니다.

1. GraphQL 쿼리 정의하기

GraphQL 쿼리를 타입스크립트에서 사용하려면, 먼저 GraphQL 스키마를 기반으로 타입 정의를 작성해야 합니다. 이렇게 함으로써 GraphQL 서버가 제공하는 스키마에 따라 쿼리를 정의하고 타입스크립트에서 안전하게 사용할 수 있습니다.

import { gql } from 'graphql-tag';

const GET_USER = gql`
  query GetUser($id: ID!) {
    user(id: $id) {
      id
      name
      email
    }
  }
`;

export default GET_USER;

2. Apollo Client 사용하기

이제 Apollo Client를 사용하여 GraphQL 쿼리를 수행하는 방법에 대해 알아봅시다. Apollo Client는 GraphQL 데이터를 가져오고 캐싱하는 데 사용되며, 타입 안정성을 제공하여 타입스크립트와 통합할 수 있습니다.

import { useQuery } from '@apollo/client';
import GET_USER from './queries';

interface User {
  id: string;
  name: string;
  email: string;
}

function UserProfile() {
  const { loading, error, data } = useQuery(GET_USER, {
    variables: { id: '123' },
  });

  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error :(</p>;

  const user: User = data.user;

  return <div>User Profile: {user.name}, {user.email}</div>;
}

3. 타입 안정성 확보하기

위 예제에서 볼 수 있듯이, 타입스크립트를 사용하면 Apollo Client를 통해 얻은 데이터의 타입을 명확하게 정의할 수 있습니다. 이를 통해 코드의 안정성을 확보하고 개발 단계에서 더 빠르고 안정적으로 작업할 수 있습니다.

결론

타입스크립트와 GraphQL을 함께 사용하는 것은 클라이언트 개발을 강력하게 할 뿐만 아니라, 코드의 안정성을 확보하고 개발 생산성을 향상시킬 수 있습니다. Apollo Client와 같은 도구를 사용하여 이점을 최대화하고 효과적으로 타입스크립트와 GraphQL을 조합하여 사용하는 것이 좋습니다.

참고 자료