Cliente GraphQL tipado com Apollo e urql
Utilize hooks e operações gerados para consultas seguras quanto aos tipos
Cliente GraphQL tipado com Apollo e urql é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.
O problema da tipagem do cliente
Clientes GraphQL como Apollo e urql retornam dados tipados como any por padrão. A geração de código produz ganchos e operações tipados que tornam as consultas totalmente seguras quanto aos tipos.
// Without codegen: data is any
const { data } = useQuery(GET_USER);
data.user; // any — no safetyPlugin de operações para Apollo
Adicione @graphql-codegen/typescript-react-apollo para gerar ganchos React tipados para cada operação em seus arquivos .graphql.
npm install --save-dev @graphql-codegen/typescript-operations
npm install --save-dev @graphql-codegen/typescript-react-apollocodegen.yml para ganchos do Apollo
Indique no codegen seus arquivos de operações .graphql e o schema para gerar ganchos tipados.
# codegen.yml
documents: "src/**/*.graphql"
generates:
src/generated/operations.ts:
plugins:
- typescript
- typescript-operations
- typescript-react-apolloEscrevendo uma consulta tipada
Escreva sua operação GraphQL em um arquivo .graphql e use o gancho gerado em seu componente.
# src/queries/GetUser.graphql
query GetUser($id: ID!) {
user(id: $id) {
id
name
email
}
}Usando o gancho gerado
Importe o gancho gerado, que é totalmente tipado: variáveis, dados, carregamento e erro são todos seguros para 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 com geração de código
Para urql, use @graphql-codegen/typescript-urql para gerar wrappers de ganchos tipados.
npm install --save-dev @graphql-codegen/typescript-urql
# Similar codegen.yml configuration, generates useGetUserQuery for urqlTypedDocumentNode
A abordagem de nível mais baixo: use TypedDocumentNode de @graphql-typed-document-node/core para associar tipos aos nós de documento sem ganchos específicos de frameworks.
import { TypedDocumentNode } from "@graphql-typed-document-node/core";
const GetUserDoc: TypedDocumentNode<GetUserQuery, GetUserQueryVariables> = gql`...`;
// Works with Apollo, urql, and any GraphQL client that supports itTipos de fragmentos
A geração de código também gera tipos para fragmentos GraphQL, permitindo a composição de fragmentos com segurança de tipos nos componentes.
# UserFields.graphql
fragment UserFields on User {
id
name
}
# Generated: UserFieldsFragment type — use as prop typeMutações tipadas
A geração de código também gera ganchos de mutação tipados, com variáveis e dados de resultado tipados.
import { useCreateUserMutation } from "./generated/operations";
const [createUser, { loading }] = useCreateUserMutation();
// createUser({ variables: { input: { name, email } } })
// — variables are fully typedMantendo as operações sincronizadas
Quando o schema mudar, execute novamente a geração de código. Adicionar uma etapa validate-queries detecta operações que fazem referência a campos removidos ou renomeados.
npx graphql-codegen --check
# or with graphql-inspector:
npx graphql-inspector validate ./src/**/*.graphql ./api/schema.graphqlRecapitulação: clientes GraphQL tipados
A geração de código cria ganchos tipados para Apollo e urql a partir dos seus arquivos de operações .graphql. Isso oferece segurança completa de tipos para variáveis, dados de consulta e formatos de fragmentos — sem necessidade de manutenção manual de tipos.
Verificação rápida
O que um gancho GraphQL tipado gerado oferece em comparação com o uso de um documento bruto?
O que você aprendeu
Clientes GraphQL tipados usam a geração de código para criar ganchos com variáveis e dados totalmente tipados para Apollo e urql. Escreva as operações em arquivos .graphql, execute a geração de código e obtenha segurança de tipos de ponta a ponta, do schema ao componente.
Perguntas Frequentes
A aula “Cliente GraphQL tipado com Apollo e urql” é grátis?
Sim — o texto completo de “Cliente GraphQL tipado com Apollo e urql” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.
O que vou aprender em “Cliente GraphQL tipado com Apollo e urql”?
Utilize hooks e operações gerados para consultas seguras quanto aos tipos Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Cliente GraphQL tipado com Apollo e urql”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Esquema GraphQL para tipos TypeScript
- Resolução tipada com GraphQL Code Generator
- Cliente GraphQL tipado com Apollo e urql
- Segurança de tipos de ponta a ponta: fluxo orientado pelo esquema