// stack.lumi
Frontend

TypeScript

JavaScript tipado para produtos mais confiaveis.

// o que é

TypeScript adiciona tipos estaticos ao JavaScript, reduzindo erros e melhorando manutencao. Para a Lumi Data, e padrao em produtos digitais modernos porque aumenta confianca sem travar velocidade.

TypeScript implementa um sistema de tipos estrutural sobre JavaScript — um tipo é compatível com outro se sua estrutura satisfaz os requisitos, independentemente de nome ou herança declarada — em contraste com sistemas nominais (Java, C#) onde dois tipos com a mesma estrutura mas nomes diferentes são incompatíveis. Bierman et al. (2014), em "Understanding TypeScript" (ECOOP), analisam o sistema de tipos do TypeScript como um sistema de tipos gradual: código JavaScript existente é válido TypeScript, e tipos podem ser adicionados incrementalmente, permitindo migração sem reescrita. A inferência de tipos elimina a maioria das anotações explícitas em código bem estruturado — o compilador deduz tipos de variáveis, parâmetros de retorno e generics, reduzindo o boilerplate de tipagem sem sacrificar a segurança. Em codebases de produto, TypeScript funciona como documentação executável: as interfaces e tipos de API contracts são verificados pelo compilador a cada build, transformando erros de integração em erros de compilação visíveis localmente antes de chegarem à produção.

Como a Lumi enxerga:A Lumi usa TypeScript para criar contratos claros, reduzir bugs e acelerar evolucao com code review mais objetivo.
// na prática

Como empresas usam TypeScript

01

Time de produto com múltiplos engenheiros colaborando em um frontend React

TypeScript previne classes inteiras de bugs em fronteiras de componente: props ausentes, tipos errados em callbacks, respostas de API usadas sem verificação de nulidade. O IntelliSense habilitado por TypeScript no VS Code reduz o tempo de desenvolvimento em componentes desconhecidos porque o desenvolvedor não precisa abrir a documentação ou ler a implementação para entender quais props são aceitas.

02

Empresa com frontend e backend Node.js no mesmo monorepo

Tipos de domínio (User, Order, Product) são definidos uma vez e compartilhados entre o frontend e o backend via package interno, garantindo que mudanças no schema da API geram erros de compilação imediatos em todos os pontos de consumo. Essa prática elimina uma categoria inteira de bugs de integração que só seriam descobertos em tempo de execução.

03

SDK ou biblioteca interna consumida por múltiplos times

TypeScript com definições de tipos exportadas é o padrão para SDKs internos porque a interface pública fica documentada e verificada pelo compilador. Atualizações que quebram a interface pública da biblioteca geram erros de compilação em todos os consumidores, criando um mecanismo de controle de breaking changes sem necessidade de testes de integração manuais.

// decisão técnica

Quando usar — e quando não usar

Use quando
  • O projeto vai durar mais de 3 meses e será mantido por mais de uma pessoa — TypeScript paga seu custo de configuração rapidamente em redução de bugs e tempo de onboarding
  • A codebase tem contratos de API (REST, GraphQL) que precisam ser sincronizados com o código cliente — tipos gerados do schema eliminam a dessincronia
  • O time usa React, Vue ou Angular em escala — os benefícios de tipagem em componentes, hooks e composables se multiplicam com o tamanho da codebase
  • O projeto inclui lógica de negócio complexa (cálculos financeiros, regras de elegibilidade, transformações de dados) onde erros de tipo em produção têm custo de negócio real
  • A organização quer padronizar a stack e reduzir variação — TypeScript funciona como lingua franca que disciplina tanto frontend quanto backend Node.js
Evite quando
  • O projeto é um script de automação de uso único ou um protótipo descartável de 2 dias — o overhead de configuração de tsconfig e resolução de erros de tipo não se paga em tempo tão curto
  • O time tem resistência cultural ao TypeScript e vai usar "any" em todo lugar para silenciar o compilador — TypeScript com any generalizado é pior do que JavaScript puro porque adiciona fricção sem adicionar segurança
  • A biblioteca de terceiros crítica para o projeto não tem definições de tipo e o custo de escrever @types customizados supera o benefício — esse cenário é raro em 2024 mas ainda existe em nichos específicos
// visão lumi

TypeScript não é opcional em nenhum projeto Lumi com duração acima de um sprint — é infraestrutura de qualidade, não preferência estética. A discussão "TypeScript vs JavaScript" foi encerrada para nós em 2020: a pergunta atual é como usar TypeScript bem, o que significa strict mode ativo, sem "any" não justificado, tipos de domínio compartilhados entre frontend e backend, e geração automática de tipos a partir de schemas de API (OpenAPI, GraphQL). Enxergamos TypeScript como o mecanismo que transforma erros de integração em erros de compilação, antecipando bugs que em JavaScript só seriam descobertos em produção ou em testes manuais. Para projetos legados em JavaScript, oferecemos migração incremental com JSDoc como primeira etapa antes de introduzir .ts completo.

Lumi escolhe quando

  • Todo projeto de produto com duração prevista acima de 4 semanas, independentemente do framework ou da quantidade de desenvolvedores
  • Monorepos com frontend e backend Node.js onde tipos compartilhados de domínio eliminam dessincronia de API contracts
  • SDKs e bibliotecas internas onde a interface pública tipada é documentação executável verificada pelo compilador
  • Qualquer projeto React, Vue ou Node.js onde o IntelliSense e a checagem estática têm impacto direto na velocidade de desenvolvimento

Lumi não recomenda quando

  • Scripts de automação descartáveis e provas de conceito com prazo de 2-3 dias onde o overhead de tsconfig não se paga
  • Times que vão usar TypeScript de forma superficial (any generalizado, ignorar erros) sem entender ou adotar o modelo de tipagem estrita — nesse caso preferimos JavaScript com JSDoc a TypeScript mal usado
// aplicações

Onde essa tecnologia gera valor

01

Frontends React, Vue e Next.js

A Lumi conecta essa aplicação ao objetivo de negócio, definindo arquitetura, dados, segurança e indicadores de sucesso antes da implementação.

02

Backends Node.js

A Lumi conecta essa aplicação ao objetivo de negócio, definindo arquitetura, dados, segurança e indicadores de sucesso antes da implementação.

03

SDKs e bibliotecas internas

A Lumi conecta essa aplicação ao objetivo de negócio, definindo arquitetura, dados, segurança e indicadores de sucesso antes da implementação.

04

Contratos entre frontend e API

A Lumi conecta essa aplicação ao objetivo de negócio, definindo arquitetura, dados, segurança e indicadores de sucesso antes da implementação.

// fundamentos

Referências acadêmicas e técnicas

Bierman, G., Abadi, M., & Torgersen, M. (2014). Understanding TypeScript. In Proceedings of the 28th European Conference on Object-Oriented Programming (ECOOP 2014). Lecture Notes in Computer Science, vol 8586. Springer.

Análise formal do sistema de tipos do TypeScript como sistema de tipos gradual estrutural, definindo suas propriedades teóricas e limitações em relação a sistemas de tipos mais rígidos.

Microsoft. (2023). TypeScript Documentation. typescriptlang.org/docs.

Documentação oficial com o sistema de tipos, strict mode, inferência de tipos, generics e integração com frameworks frontend como referência técnica primária.

Van Rossum, G., Lehtosalo, J., & Langa, Ł. (2014). PEP 484 – Type Hints. Python.org.

Proposta de tipagem gradual para Python que reflete os mesmos princípios do TypeScript — adicionar tipos incrementalmente sem exigir adoção completa — útil como comparação de sistemas de tipagem gradual.

Osmani, A. (2023). JavaScript Design Patterns (2nd ed.). O'Reilly Media.

Discute como TypeScript fortalece padrões de design em JavaScript — Module, Factory, Observer — ao adicionar tipagem estática que documenta contratos entre componentes.

Cherny, B. (2019). Programming TypeScript: Making Your JavaScript Applications Scale. O'Reilly Media.

Referência prática de TypeScript em aplicações de escala, cobrindo o sistema de tipos avançado, generics, conditional types e padrões de segurança de tipo em APIs.

// tecnologias relacionadas

Frontend

// próximo passo

Quer saber se esse stack faz sentido para você?

A Lumi avalia contexto, dados, equipe, custo e maturidade para recomendar a tecnologia certa e entregar com responsabilidade.