Typowany klient GraphQL z Apollo i urql
Używaj wygenerowanych hooków i operacji do bezpiecznych typowo zapytań.
Typowany klient GraphQL z Apollo i urql to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej TypeScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs TypeScript Academy zawiera 4 lekcji w sumie.
Problem typowania klienta
Klienci GraphQL, tacy jak Apollo i urql, domyślnie zwracają dane o typie any. Codegen generuje typowane hooki i operacje, dzięki którym zapytania są w pełni bezpieczne typowo.
// Without codegen: data is any
const { data } = useQuery(GET_USER);
data.user; // any — no safetyWtyczka operacji dla Apollo
Dodaj @graphql-codegen/typescript-react-apollo, aby wygenerować typowane hooki React dla każdej operacji w plikach .graphql.
npm install --save-dev @graphql-codegen/typescript-operations
npm install --save-dev @graphql-codegen/typescript-react-apollocodegen.yml dla hooków Apollo
Wskaż w codegen pliki operacji .graphql oraz schemat, aby wygenerować typowane hooki.
# codegen.yml
documents: "src/**/*.graphql"
generates:
src/generated/operations.ts:
plugins:
- typescript
- typescript-operations
- typescript-react-apolloPisanie typowanego zapytania
Zapisz operację GraphQL w pliku .graphql i użyj wygenerowanego hooka w komponencie.
# src/queries/GetUser.graphql
query GetUser($id: ID!) {
user(id: $id) {
id
name
email
}
}Korzystanie z wygenerowanego hooka
Zaimportuj wygenerowany, w pełni typowany hook: zmienne, dane, stan ładowania i błędy są bezpieczne typowo w 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 z codegen
W przypadku urql użyj @graphql-codegen/typescript-urql, aby wygenerować typowane opakowania hooków.
npm install --save-dev @graphql-codegen/typescript-urql
# Similar codegen.yml configuration, generates useGetUserQuery for urqlTypedDocumentNode
Podejście najniższego poziomu: użyj TypedDocumentNode z @graphql-typed-document-node/core, aby dołączyć typy do węzłów dokumentów bez hooków zależnych od konkretnego frameworka.
import { TypedDocumentNode } from "@graphql-typed-document-node/core";
const GetUserDoc: TypedDocumentNode<GetUserQuery, GetUserQueryVariables> = gql`...`;
// Works with Apollo, urql, and any GraphQL client that supports itTypy fragmentów
Codegen generuje również typy dla fragmentów GraphQL, umożliwiając bezpieczne typowo komponowanie fragmentów w komponentach.
# UserFields.graphql
fragment UserFields on User {
id
name
}
# Generated: UserFieldsFragment type — use as prop typeTypowane mutacje
Codegen generuje także typowane hooki mutacji wraz z typowanymi zmiennymi i danymi wynikowymi.
import { useCreateUserMutation } from "./generated/operations";
const [createUser, { loading }] = useCreateUserMutation();
// createUser({ variables: { input: { name, email } } })
// — variables are fully typedUtrzymywanie zgodności operacji
Po zmianie schematu uruchom ponownie codegen. Dodanie kroku validate-queries pozwala wykryć operacje odwołujące się do usuniętych lub przemianowanych pól.
npx graphql-codegen --check
# or with graphql-inspector:
npx graphql-inspector validate ./src/**/*.graphql ./api/schema.graphqlPodsumowanie: typowani klienci GraphQL
Codegen generuje typowane hooki dla Apollo i urql na podstawie plików operacji .graphql. Zapewnia to pełne bezpieczeństwo typów dla zmiennych, danych zapytań i kształtów fragmentów — bez konieczności ręcznego utrzymywania typów.
Szybkie sprawdzenie
Co zapewnia wygenerowany, typowany hook GraphQL w porównaniu z użyciem surowego dokumentu?
Czego się Państwo nauczyli
Typowani klienci GraphQL korzystają z codegen do generowania hooków z w pełni typowanymi zmiennymi i danymi dla Apollo i urql. Należy zapisywać operacje w plikach .graphql, uruchamiać codegen i uzyskiwać bezpieczeństwo typów od schematu aż po komponent.
Często zadawane pytania
Czy lekcja „Typowany klient GraphQL z Apollo i urql” jest bezpłatna?
Tak — pełny tekst „Typowany klient GraphQL z Apollo i urql” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu TypeScript Academy, przejdź na CoddyKit PRO. Kurs TypeScript Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Typowany klient GraphQL z Apollo i urql”?
Używaj wygenerowanych hooków i operacji do bezpiecznych typowo zapytań. Ćwiczysz TypeScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć TypeScript Academy?
Nie wymagamy żadnego doświadczenia. TypeScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Typowany klient GraphQL z Apollo i urql”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji TypeScript Academy?
Tak. Każda lekcja TypeScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Schemat GraphQL na typy TypeScript
- Typowane resolvery z GraphQL Code Generator
- Typowany klient GraphQL z Apollo i urql
- Bezpieczeństwo typów od końca do końca: schemat jako źródło