Início/Blog/TypeScript, Python e IA
Arquitetura de Software

TypeScript, Python e geração de código por IA: onde cada um se encaixa

A melhor linguagem para código gerado por IA não é uma única linguagem. É aquela cujos contratos, runtime, ecossistema e ferramentas de verificação tornam uma camada específica mais fácil de limitar, inspecionar e operar.

IA muda o custo de escrever, não o custo de errar

O Octoverse 2025 do GitHub relatou que TypeScript se tornou a linguagem mais usada no GitHub em agosto de 2025, enquanto linguagens tipadas cresceram ao redor do desenvolvimento assistido por IA. Isso não significa que Python perdeu importância. Significa que geração rápida torna sistemas de feedback mais valiosos. TypeScript encontra erros estruturais durante a produção. Python dá acesso direto ao ecossistema dominante de IA, dados, scripts e automação. SQL mantém fatos de negócio próximos ao banco.

A pergunta arquitetural não é “TypeScript ou Python?”. É “em qual camada cada um expressa o contrato com mais clareza, e qual sistema independente rejeitará uma mudança plausível, mas incorreta?”

Stack de linguagens por camada
Borda da experiênciaTypeScriptWeb UI, SDKs, clientes de API e contratos compartilhados.Feedback rápido do compilador entre interfaces e application glue.
Fronteira de serviçoTypeScript ou Python tipadoAPIs, orquestração, workers, filas, webhooks e tool gateways.Escolha pelo ecossistema, mas valide em runtime toda fronteira externa.
IA e automaçãoPythonModelos, avaliação, retrieval, processamento de dados, scripts e automação.Ecossistema rico e iteração concisa; type hints não impõem comportamento em runtime.
System of recordSQLFatos, relações, constraints, transações, permissões e consultas.Invariantes do banco rejeitam estado inválido independentemente do caller.
Prova independenteCI, schemas e testesBuilds, checks estáticos, contratos, migrações, scans e política.A implementação gerada nunca é seu próprio juiz final.

TypeScript é mais forte onde contratos viajam

TypeScript entende JavaScript e usa inferência, permitindo adicionar estrutura sem anotar cada linha. Seus declaration files descrevem o formato de bibliotecas e APIs. Em sistemas gerados por IA, isso é útil onde uma mudança precisa permanecer compatível entre frontend, backend, SDK, eventos e definições de tools.

Mas tipos TypeScript desaparecem em runtime. Uma função tipada não torna JSON externo confiável. Código gerado ainda precisa de validação de schema, autorização, testes e constraints de banco. O compilador é um revisor rápido de contratos, não uma fronteira de segurança.

Python é mais forte onde ecossistema e ciclo de iteração importam

Type hints de Python apoiam ferramentas, IDEs, linters e type checkers, mas o runtime não os aplica. Essa flexibilidade é produtiva para experimentação com modelos, pipelines de avaliação, dados, integrações, scripts e automação backend. Também significa que uma função Python gerada por IA pode parecer bem tipada enquanto aceita dados ruins em runtime se a validação não for explícita.

Pydantic é útil porque valida dados não confiáveis em modelos tipados. Asyncio suporta I/O concorrente para automações orientadas à rede. O padrão prático é Python tipado internamente, modelos runtime nas fronteiras e testes focados em efeitos colaterais, concorrência e transformações.

Alcance do contratoQuantos serviços, clientes, eventos e times precisam concordar com este formato?
Risco runtimeO que rejeita input inválido depois que tipos estáticos e geração acabaram?
Fit de ecossistemaQual linguagem já possui bibliotecas, operadores e observabilidade para a tarefa?
Custo de verificaçãoQuão barato é para CI provar o comportamento após a geração?

SQL deve ser dono dos fatos, não apenas do armazenamento

Serviços gerados podem esquecer um check, disputar com outro worker ou usar o tipo errado do SDK. Constraints de banco permanecem ativas na fronteira final de escrita. O PostgreSQL documenta constraints como ferramentas para controlar dados e transações como unidades tudo ou nada. Unique keys, foreign keys, checks, permissões por linha e transações transformam invariantes de negócio em defesas executáveis.

Isso não significa mover toda regra para SQL. Significa colocar fatos duráveis onde todo caller precisa respeitá-los. TypeScript e Python expressam workflows; o banco deve rejeitar estados impossíveis.

NecessidadeMelhor padrão inicialComo ajuda código geradoContrapeso obrigatório
Contratos compartilhados de API e eventosTypeScript mais schemas ou clientes gerados.Compilador expõe formatos incompatíveis rapidamente.Validação runtime, versionamento, contract tests e autorização.
Web app e SDK glueTypeScript.Um ecossistema tipado do browser ao servidor.Testes de integração e tratamento explícito de erros e estado.
IA, avaliação, dados e automaçãoPython tipado.Ecossistema forte e iteração concisa.Pydantic ou equivalente, type checker, testes e observabilidade.
Workers concorrentes de integraçãoPython asyncio ou TypeScript, pelo ecossistema.Ambos atendem bem orquestração orientada a rede.Timeouts, retries, idempotência, backpressure e tracing.
Fatos duráveis de negócioConstraints e transações SQL.Rejeita estado inválido independentemente dos callers gerados.Testes de migração, review de queries, backups e monitoramento.
Fronteira entre linguagensOpenAPI, JSON Schema, eventos ou protobuf.Torna o contrato independente das implementações.Checks de compatibilidade e review do código gerado.

O que eu construiria

Eu construiria um template de repositório poliglota onde contratos ficam versionados e geram clientes TypeScript, modelos Python e fixtures de validação. Serviços TypeScript seriam donos de APIs de produto e integrações que compartilham contratos com aplicações web. Serviços Python seriam donos de IA, dados, avaliação e automação. PostgreSQL aplicaria invariantes duráveis.

Cada mudança gerada mostraria um mapa de impacto por linguagem e camada: contratos alterados, clientes regenerados, modelos Python afetados, migrações exigidas, testes selecionados e validadores runtime exercitados. Isso torna escolha de linguagem uma decisão arquitetural visível, não preferência pessoal.

O princípio de design

IA consegue escrever qualquer uma dessas linguagens de forma convincente. A vantagem de engenharia vem de atribuir cada linguagem à camada onde erros se tornam mais fáceis de detectar. Use TypeScript para contratos que viajam, Python para ecossistemas e automações rápidas, SQL para fatos que precisam continuar verdadeiros e verificação independente para todos.