GraphQL 스키마에서 TypeScript 형식으로
코드 생성으로 .graphql 파일에서 형식을 생성합니다.
GraphQL 스키마에서 TypeScript 형식으로은(는) CoddyKit의 무료 TypeScript Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 TypeScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
문제: 스키마와 타입의 불일치
GraphQL 프로젝트에서는 자동화 없이는 서버 스키마와 클라이언트 TypeScript 타입이 쉽게 어긋납니다. 코드 생성은 스키마에서 직접 타입을 도출하여 이 문제를 해결합니다.
# Without codegen: manual types that drift from schema
interface User { id: string; name: string; } // may not match schemaGraphQL 코드 생성기
@graphql-codegen/cli는 GraphQL 스키마를 읽고 TypeScript 타입을 자동으로 생성합니다.
npm install --save-dev @graphql-codegen/cli @graphql-codegen/typescriptcodegen.yml 구성
codegen.yml에서 스키마 원본과 출력 위치를 구성하십시오.
# codegen.yml
schema: "./api/schema.graphql"
generates:
src/generated/types.ts:
plugins:
- typescript생성기 실행
graphql-codegen을 실행하여 스키마에서 TypeScript 타입을 생성하십시오.
npx graphql-codegen
# Generates src/generated/types.ts with all schema types생성된 출력 예시
생성된 파일에는 스키마의 모든 GraphQL 타입에 대응하는 TypeScript 인터페이스가 포함됩니다.
// src/generated/types.ts (generated)
export type User = {
__typename?: "User";
id: string;
name: string;
email: string;
};
export type Query = {
__typename?: "Query";
user?: Maybe<User>;
};원격 엔드포인트의 스키마
코드 생성기는 인트로스펙션을 사용하여 실행 중인 GraphQL 엔드포인트에서 스키마를 가져올 수도 있습니다.
# codegen.yml with remote schema
schema:
- https://api.example.com/graphql:
headers:
Authorization: "Bearer ${AUTH_TOKEN}"스칼라 타입 매핑
코드 생성기 구성에서 사용자 지정 GraphQL 스칼라를 TypeScript 타입에 매핑하십시오.
# codegen.yml
config:
scalars:
DateTime: string
JSON: Record<string, unknown>
Upload: File열거형 처리
GraphQL 열거형은 코드 생성기 구성에 따라 TypeScript 문자열 열거형 또는 유니온 타입으로 매핑됩니다.
# Generated from GraphQL enum Role { ADMIN USER GUEST }
export enum Role {
Admin = "ADMIN",
User = "USER",
Guest = "GUEST",
}널이 아닌 값과 Maybe
GraphQL의 널 허용 필드는 생성된 타입에서 Maybe<T>(즉, T | null | undefined)가 되며, 이는 스키마의 널 허용 여부를 반영합니다.
// GraphQL: name: String (nullable)
// Generated: name?: Maybe<string>
// GraphQL: id: ID! (non-null)
// Generated: id: stringCI 통합
생성된 타입이 최신 상태인지 확인하기 위해 CI에서 코드 생성을 실행하십시오. 스키마가 변경되었는데 다시 생성하지 않았다면 빌드를 실패시키십시오.
# CI: check no drift
npx graphql-codegen --check
# Exits 1 if generated files are out of date스키마에서 타입 생성 요약
GraphQL 코드 생성기는 스키마를 읽고 TypeScript 타입을 자동으로 생성합니다. codegen.yml로 구성하고, graphql-codegen을 실행하며, 스키마와 타입의 불일치를 방지하도록 CI에 통합하십시오.
빠른 확인
GraphQL 코드 생성기의 주된 목적은 무엇입니까?
배운 내용
GraphQL 코드 생성기는 스키마에서 TypeScript를 생성하여 스키마와 타입의 불일치를 없앱니다. codegen.yml로 구성하고, 사용자 지정 스칼라를 매핑하며, 최신 상태를 강제하도록 CI에 통합하십시오.
자주 묻는 질문
“GraphQL 스키마에서 TypeScript 형식으로” 강의는 무료인가요?
네 — “GraphQL 스키마에서 TypeScript 형식으로” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 TypeScript Academy 강의 전체를 잠금 해제할 수 있습니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“GraphQL 스키마에서 TypeScript 형식으로”에서 뭘 배우나요?
코드 생성으로 .graphql 파일에서 형식을 생성합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
TypeScript Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 TypeScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“GraphQL 스키마에서 TypeScript 형식으로” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 TypeScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 TypeScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- GraphQL 스키마에서 TypeScript 형식으로
- GraphQL 코드 생성기로 형식이 지정된 리졸버 만들기
- Apollo 및 urql을 사용하는 형식 지정 GraphQL 클라이언트
- 종단 간 형식 안전성: 스키마 우선 작업 흐름