Tudo o que você precisa saber para escrever código TypeScript robusto, limpo e escalável
Conceito | Utilidade Principal | Quando Usar | Exemplo |
---|---|---|---|
Type Guards | Verificação de tipos em tempo de execução | Quando você precisa diferenciar entre tipos em runtime | if (typeof x === 'string') { ... } |
Type Inference | Tipagem automática pelo compilador | Sempre que possível para reduzir código redundante | let x = 10; // Tipo inferido como number |
Utility Types | Manipulação prática de tipos | Para transformar tipos existentes de forma declarativa | type PartialUser = Partial<User>; |
Declaration Files | Tipagem para bibliotecas externas | Quando usando libs JS ou criando definições de tipo | declare module 'lib' { ... } |
Type Predicates | Funções que atuam como type guards | Para funções personalizadas de verificação de tipo | function isCat(pet: Pet): pet is Cat { ... } |
Index Types | Acesso dinâmico a propriedades | Quando trabalhar com propriedades desconhecidas em tempo de compilação | function getProperty<T, K extends keyof T>(obj: T, key: K) { ... } |