Generics Avançado em TypeScript
Baixar PDFUtility types, conditional types, mapped types e infer — o sistema de tipos mais poderoso do TypeScript.
Generics Avançado em TypeScript
Generics são o que torna TypeScript uma linguagem de tipos de primeira classe. Enquante generics básicos são como funções que aceitam tipos, generics avançados permitem transformar, condicionar e derivar tipos automaticamente.
Analogia
Imagine uma fábrica de caixas: a caixa (generic) não se importa com o que está dentro. Mas TypeScript pode inspecionar o conteúdo, transformá-lo e criar novas caixas derivadas — tudo em tempo de compilação.
O que você vai aprender
Utility Types
Partial, Required, Pick, Omit, Record, Extract, Exclude, ReturnType, Parameters — os tipos utilitários embutidos e como criar os seus.
Conditional & Mapped Types
Ternários em tipos, infer, mapped types, tipos recursivos — programação de tipos completa.
Níveis de generics
| Nível | O que faz | Exemplo |
|---|---|---|
| Básico | Aceita qualquer tipo T | Array<T>, Promise<T> |
| Constraints | Restringe T a subtipos | <T extends { id: string }> |
| Conditional | Escolhe tipo baseado em condição | T extends string ? A : B |
| Mapped | Transforma cada propriedade de um tipo | { [K in keyof T]: ... } |
| Template Literal | Cria tipos de string dinâmicos | `get${Capitalize<K>}` |
Referências
- TypeScript Handbook — Generics
- TypeScript Deep Dive — Generics
- Type Challenges (GitHub) — exercícios de generics