Skip to content
Latchkey

tsc vs esbuild: Verificação de Tipos vs Transpilação Rápida

Eles fazem trabalhos diferentes: o esbuild transpila TypeScript de forma extremamente rápida mas pula a verificação de tipos; o tsc verifica tipos (e pode emitir) mas é mais lento.

Uma confusão comum: o esbuild compila TS para JS removendo os tipos sem verificá-los, então ele nunca reporta erros de tipo. O tsc de fato verifica tipos. A maioria dos times usa o esbuild (ou swc) para fazer o build e o tsc para verificar tipos.

tscesbuild
Verificação de tiposSim (é o objetivo)Não (só remove tipos)
Velocidade de transpilaçãoMais lentaMuito rápida
Emit/bundleEmit, sem bundlingTranspila + faz bundle
Reporta erros de tipoSimNunca
Papel típicoGate de tiposEtapa de build/transpilação

Por que você normalmente precisa dos dois

O esbuild produz JS executável rapidamente, mas como não entende o sistema de tipos, um build pode ter sucesso enquanto erros de tipo reais passam despercebidos. O tsc é a ferramenta que falha quando os tipos estão errados. Usar apenas o esbuild significa perder sua rede de segurança de tipos.

A configuração comum

Faça o build/bundle com o esbuild (ou swc) por velocidade, e rode tsc --noEmit como uma etapa separada de verificação de tipos. Isso dá builds rápidos mais verificação de tipos genuína. Localmente, o modo watch usa o esbuild por velocidade; a CI roda o tsc para impor a correção.

Em CI

Rode tsc --noEmit como seu próprio job/gate para que um build rápido do esbuild nunca esconda regressões de tipo. O esbuild mantém a etapa de build rápida; o tsc mantém os tipos honestos. Eles são complementares, não concorrentes.

O veredito

Não escolha só um: use o esbuild (ou swc) para transpilação/bundling rápidos e o tsc --noEmit para verificação de tipos. O esbuild sozinho não vai pegar erros de tipo; o tsc sozinho é mais lento para fazer o build.

Guias relacionados