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>
// ^ falseDistribuiçã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>
// ^ stringDicas
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 unionsVerificaçã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
- T extends U ? X : Y na prática
- infer para utilitários semelhantes a ReturnType
- Nativos: ReturnType, Parameters, InstanceType etc.