0Pricing
TypeScript Academy · Aula

T extends U ? X : Y na prática

Escreva tipos condicionais práticos; aprenda a distribuição sobre uniões e como desativá-la quando necessário.

T extends U ? X : Y na prática é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 1 de 3. 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 3 aulas no total.

Introdução

Objetivo: usar tipos condicionais para expressar lógica no sistema de tipos e entender quando eles se distribuem sobre uniões.

  • Padrão: T extends U ? X : Y
  • Distribuição: aplica o ramo a cada membro da união

Padrão básico

Os tipos condicionais escolhem um ramo com base no fato de T poder ou não ser atribuído a string.

type IsString<T> = T extends string ? true : false

type A = IsString<string>
//   ^ true

type B = IsString<number>
//   ^ false

Distribuição

Com um T não encapsulado, a verificação é executada para cada membro da união: string | number se torna string[] | number[].

type ToArray<T> = T extends any ? T[] : never

type C = ToArray<string | number>
// distributes:
// C is string[] | number[]

Desativar a distribuição

Coloque T em uma tupla ([T]) para impedir a distribuição e tratar a união como um todo.

type ToArrayNoDist<T> = [T] extends [any] ? T[] : never

type D = ToArrayNoDist<string | number>
// no distribution:
// D is (string | number)[]

Utilidade prática

Exemplo do padrão: para arrays, ElementType usa inferência para extrair o elemento; caso contrário, mantém o tipo como está.

type NonEmptyArray<T> = T[] extends [] ? never : T[]
// Usually better:
// type ElementType<T> = T extends ReadonlyArray<infer U> ? U : T

type E1 = ElementType<string[]>
//   ^ string

type E2 = ElementType<readonly number[]>
//   ^ number

type E3 = ElementType<string>
//   ^ string

Dicas

Dicas: mantenha as condições simples; observe a implantação; reutilize tipos auxiliares; inclua arquivos de testes para combinações complexas.

// Tips
// - Keep conditions simple; deep nesting harms readability
// - Document distribution behavior for teammates
// - Prefer helper aliases (ElementType, Awaited) for reuse
// - Watch for De Morgan like logic when composing unions

Verificação da distribuição

Verificação rápida: quando os tipos condicionais se distribuem?

Recapitulação

Recapitulação: os tipos condicionais modelam lógica nos tipos. A distribuição é aplicada a cada membro da união; use uma tupla para desativá-la.

Perguntas Frequentes

A aula “T extends U ? X : Y na prática” é grátis?

Sim — o texto completo de “T extends U ? X : Y na prática” é 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 3 aulas no total.

O que vou aprender em “T extends U ? X : Y na prática”?

Escreva tipos condicionais práticos; aprenda a distribuição sobre uniões e como desativá-la quando necessário. 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 1 de 3.

Quanto tempo leva a aula “T extends U ? X : Y na prática”?

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. T extends U ? X : Y na prática
  2. infer para utilitários semelhantes a ReturnType
  3. Nativos: ReturnType, Parameters, InstanceType etc.
← Voltar para TypeScript Academy