Pular para o conteúdo principal

TypeScript

  • É um superset do JavaScript que adiciona tipagem estática ao código.
  • Foi criado pela Microsoft.
  • Compila para JavaScript puro e é amplamente usado em projetos de grande escala.
  • Facilita a detecção precoce de erros e melhora a qualidade do código.
  • Oferece suporte completo ao paradigma orientado a objetos.

Tipagem Estática e Forte

Tipagem Estática

  • Os tipos são definidos e verificados em tempo de compilação, ou seja, antes da execução.
  • Ajuda a evitar erros comuns em tempo de execução.

Tipagem Forte

  • Impede que variáveis de tipos incompatíveis sejam utilizadas de forma indevida.
  • Reduz falhas causadas por coerções automáticas de tipo.

A tipagem forte impede somar um número com uma string sem conversão explícita.

Generics

  • Permitem que funções, classes e interfaces sejam escritas de forma reutilizável, mantendo a segurança de tipos.
  • Oferecem flexibilidade sem abrir mão da previsibilidade do comportamento do código.
  • São amplamente usados em bibliotecas e estruturas genéricas, como listas e filas.

Namespaces

  • Servem para organizar o código em blocos lógicos, agrupando funções, classes e interfaces relacionadas.
  • Ajudam a evitar conflitos de nomes em grandes aplicações.
  • No entanto, em projetos modernos, o uso de módulos ES (ES Modules) tem substituído os namespaces.

Decorators (Decoradores)

  • São anotações que modificam o comportamento de classes, métodos ou propriedades.
  • Muito utilizados em frameworks como Angular para definir metadados de componentes.
  • Por serem uma funcionalidade experimental, exigem ativação no compilador TypeScript.

Resumo Rápido – Características do TypeScript

CaracterísticaDescrição
Tipagem EstáticaTipos verificados na compilação
Tipagem ForteImpede operações entre tipos incompatíveis
Orientado a ObjetosSuporte a classes, herança, interfaces
GenéricoCódigo reutilizável com múltiplos tipos
NamespacesOrganização de código (substituídos por modules em projetos modernos)
DecoratorsAnotação e modificação de classes/métodos (feature experimental)