0Pricing
TypeScript Academy · Aula

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 safety

Plugin 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-apollo

codegen.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-apollo

Escrevendo 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 urql

TypedDocumentNode

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 it

Tipos 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 type

Mutaçõ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 typed

Mantendo 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.graphql

Recapitulaçã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

  1. Esquema GraphQL para tipos TypeScript
  2. Resolução tipada com GraphQL Code Generator
  3. Cliente GraphQL tipado com Apollo e urql
  4. Segurança de tipos de ponta a ponta: fluxo orientado pelo esquema
← Voltar para TypeScript Academy