Apollo 및 urql을 사용하는 형식 지정 GraphQL 클라이언트
생성된 훅과 연산으로 형식 안전 쿼리를 사용합니다.
Apollo 및 urql을 사용하는 형식 지정 GraphQL 클라이언트은(는) CoddyKit의 무료 TypeScript Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 TypeScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
클라이언트 타입 지정 문제
Apollo와 urql 같은 GraphQL 클라이언트는 기본적으로 any 타입의 데이터를 반환합니다. 코드 생성기는 타입이 지정된 훅과 작업을 생성하여 쿼리를 완전히 타입 안전하게 만듭니다.
// Without codegen: data is any
const { data } = useQuery(GET_USER);
data.user; // any — no safetyApollo용 작업 플러그인
각 .graphql 파일의 작업에 사용할 타입이 지정된 React 훅을 생성하려면 @graphql-codegen/typescript-react-apollo를 추가합니다.
npm install --save-dev @graphql-codegen/typescript-operations
npm install --save-dev @graphql-codegen/typescript-react-apolloApollo 훅용 codegen.yml
타입이 지정된 훅을 생성하도록 codegen이 .graphql 작업 파일과 스키마를 가리키게 합니다.
# codegen.yml
documents: "src/**/*.graphql"
generates:
src/generated/operations.ts:
plugins:
- typescript
- typescript-operations
- typescript-react-apollo타입이 지정된 쿼리 작성
.graphql 파일에 GraphQL 작업을 작성하고 컴포넌트에서 생성된 훅을 사용합니다.
# src/queries/GetUser.graphql
query GetUser($id: ID!) {
user(id: $id) {
id
name
email
}
}생성된 훅 사용
변수, 데이터, 로딩 상태, 오류가 모두 TypeScript의 타입 검사를 받는 완전히 타입이 지정된 생성 훅을 가져옵니다.
import { useGetUserQuery } from "./generated/operations";
function UserCard({ id }: { id: string }) {
const { data, loading } = useGetUserQuery({ variables: { id } });
if (loading) return <p>Loading...</p>;
return <p>{data?.user?.name}</p>; // data.user: User | null — typed
}코드 생성을 사용하는 urql
urql에서는 타입이 지정된 훅 래퍼를 생성하도록 @graphql-codegen/typescript-urql을 사용합니다.
npm install --save-dev @graphql-codegen/typescript-urql
# Similar codegen.yml configuration, generates useGetUserQuery for urqlTypedDocumentNode
가장 낮은 수준의 접근 방식으로, 프레임워크에 종속된 훅 없이 문서 노드에 타입을 연결하려면 @graphql-typed-document-node/core의 TypedDocumentNode를 사용합니다.
import { TypedDocumentNode } from "@graphql-typed-document-node/core";
const GetUserDoc: TypedDocumentNode<GetUserQuery, GetUserQueryVariables> = gql`...`;
// Works with Apollo, urql, and any GraphQL client that supports it프래그먼트 타입
코드 생성은 GraphQL 프래그먼트의 타입도 생성하므로 컴포넌트에서 타입 안전한 프래그먼트 조합을 사용할 수 있습니다.
# UserFields.graphql
fragment UserFields on User {
id
name
}
# Generated: UserFieldsFragment type — use as prop type타입이 지정된 변형
코드 생성은 타입이 지정된 변수와 결과 데이터를 포함하는 타입 지정 변형 훅도 생성합니다.
import { useCreateUserMutation } from "./generated/operations";
const [createUser, { loading }] = useCreateUserMutation();
// createUser({ variables: { input: { name, email } } })
// — variables are fully typed작업 동기화 유지
스키마가 변경되면 코드 생성을 다시 실행합니다. validate-queries 단계를 추가하면 삭제되었거나 이름이 변경된 필드를 참조하는 작업을 찾아낼 수 있습니다.
npx graphql-codegen --check
# or with graphql-inspector:
npx graphql-inspector validate ./src/**/*.graphql ./api/schema.graphql복습: 타입이 지정된 GraphQL 클라이언트
코드 생성은 .graphql 작업 파일에서 Apollo와 urql용 타입 지정 훅을 생성합니다. 따라서 변수, 쿼리 데이터, 프래그먼트 구조에 완전한 타입 안전성이 적용되며 수동으로 타입을 관리할 필요가 없습니다.
빠른 확인
생성된 타입 지정 GraphQL 훅은 원시 문서를 사용하는 것보다 어떤 기능을 제공합니까?
학습한 내용
타입이 지정된 GraphQL 클라이언트는 코드 생성을 사용해 .graphql 파일의 작업으로부터 Apollo와 urql용 훅을 생성합니다. 작업을 .graphql 파일에 작성하고 코드 생성을 실행하면 스키마부터 컴포넌트까지 모든 과정에서 타입 안전성을 확보할 수 있습니다.
자주 묻는 질문
“Apollo 및 urql을 사용하는 형식 지정 GraphQL 클라이언트” 강의는 무료인가요?
네 — “Apollo 및 urql을 사용하는 형식 지정 GraphQL 클라이언트” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 TypeScript Academy 강의 전체를 잠금 해제할 수 있습니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Apollo 및 urql을 사용하는 형식 지정 GraphQL 클라이언트”에서 뭘 배우나요?
생성된 훅과 연산으로 형식 안전 쿼리를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
TypeScript Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 TypeScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“Apollo 및 urql을 사용하는 형식 지정 GraphQL 클라이언트” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 TypeScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 TypeScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- GraphQL 스키마에서 TypeScript 형식으로
- GraphQL 코드 생성기로 형식이 지정된 리졸버 만들기
- Apollo 및 urql을 사용하는 형식 지정 GraphQL 클라이언트
- 종단 간 형식 안전성: 스키마 우선 작업 흐름