Categoria

TypeScript

Constraints em generics com extends
TypeScript

Constraints em generics com extends

Constraints em generics são mecanismos que permitem restringir quais tipos podem ser utilizados como argumento para um parâmetro genérico. A palavra-chave extends é usada para definir esses limites, garantindo que apenas tipos que satisfaçam determinada condição sejam aceitos.

05/05/2026
Covariance e contravariance em TypeScript
TypeScript 05/05/2026

Covariance e contravariance em TypeScript

Variância descreve como a relação de subtipos entre tipos complexos se comporta quando seus componentes variam. Em TypeScript, entender variância é crucial para escrever código type-safe.

Classes em TypeScript: visibilidade e modificadores
TypeScript 05/05/2026

Classes em TypeScript: visibilidade e modificadores

Modificadores de acesso são palavras-chave que controlam onde propriedades e métodos de uma classe podem ser acessados. Em JavaScript, a privacidade sempre foi uma convenção — desenvolvedores usavam _ como prefixo para indicar membros "privados", mas nada impedia o acesso externo. TypeScript introduz controle real em tempo de compilação, garantindo que violações de encapsulamento sejam detectadas antes da execução.

Branded types: tipos nominais em TypeScript estrutural
TypeScript 05/05/2026

Branded types: tipos nominais em TypeScript estrutural

TypeScript utiliza um sistema de tipos estrutural, onde dois tipos são considerados compatíveis se suas estruturas (propriedades e métodos) forem equivalentes. Diferente de linguagens como Java ou C#, que usam tipagem nominal (baseada no nome explícito do tipo), TypeScript compara apenas a forma dos dados.

Builder pattern com TypeScript
TypeScript 05/05/2026

Builder pattern com TypeScript

O padrão Builder é um padrão de projeto criacional que permite construir objetos complexos passo a passo. Diferente do Factory, que geralmente cria objetos em uma única chamada, o Builder separa o processo de construção da representação final, permitindo maior controle sobre cada etapa.

Arrays e tuplas tipados
TypeScript 05/05/2026

Arrays e tuplas tipados

Em TypeScript, arrays tipados são a base para trabalhar com coleções de dados de forma segura. Existem duas sintaxes equivalentes para declarar arrays tipados:

Assertion functions: validando tipos em runtime com tipo
TypeScript 05/05/2026

Assertion functions: validando tipos em runtime com tipo

Assertion functions são funções que afirmam uma condição sobre um valor em tempo de execução e, se a condição for verdadeira, refinam o tipo desse valor no escopo do chamador. Diferente de validações tradicionais que retornam um booleano ou simplesmente lançam um erro, as assertion functions têm um efeito duplo: protegem o runtime contra dados inválidos e informam o sistema de tipos do TypeScript sobre o formato real dos dados.

AST do TypeScript: lendo e transformando código
TypeScript 05/05/2026

AST do TypeScript: lendo e transformando código

A Árvore Sintática Abstrata (AST) é uma representação hierárquica da estrutura gramatical do código fonte, abstraindo detalhes sintáticos como espaçamento, pontuação e comentários. Diferente da CST (Árvore Sintática Concreta), que preserva cada caractere, a AST foca apenas na estrutura essencial do programa.

Abstract classes e métodos abstratos
TypeScript 05/05/2026

Abstract classes e métodos abstratos

Classes abstratas são um dos pilares da programação orientada a objetos em TypeScript, servindo como modelos base que não podem ser instanciados diretamente. Elas representam conceitos genéricos que precisam de especialização para serem úteis, funcionando como contratos parciais que combinam implementação concreta com definições abstratas.

Análise estática avançada com ts-morph
TypeScript 05/05/2026

Análise estática avançada com ts-morph

O ts-morph é uma biblioteca que fornece uma API wrapper sobre o compilador TypeScript, simplificando drasticamente a análise e manipulação de código fonte. Enquanto o módulo ts nativo do TypeScript oferece acesso direto ao compilador, sua API é extremamente verbosa e de baixo nível. O ts-morph abstrai essa complexidade, oferecendo uma interface mais expressiva e orientada a objetos.