Skip to content
Latchkey

tsc vs Babel: qual usar para compilar TypeScript no CI?

O tsc verifica tipos e emite JavaScript; o Babel apenas remove tipos e transpila rápido - então muitos pipelines usam os dois, para trabalhos diferentes.

O tsc é o compilador do TypeScript: ele verifica tipos e pode emitir JavaScript. O Babel (com o preset de TypeScript) remove tipos e transpila rapidamente, mas não verifica tipos. Eles resolvem problemas sobrepostos, porém distintos.

tscBabel
Verificação de tiposSimNão (apenas remove tipos)
Velocidade de emissãoMais lentaRápida
Informação de tipos entre arquivosSimNão (transformação por arquivo)
Plugins / transformaçõesLimitadosGrande ecossistema de plugins
Papel típico no CIVerificação de tipos (--noEmit)Transpilação rápida no bundler

No CI

Um padrão comum e rápido é deixar um transpiler rápido (Babel, esbuild ou SWC) emitir JavaScript enquanto se executa tsc --noEmit apenas para verificação de tipos. O tsc sozinho é a ferramenta única mais segura porque ele tanto checa quanto emite, mas é mais lento. O Babel sozinho é rápido, mas não consegue detectar erros de tipo - então uma etapa separada de tsc --noEmit é essencial se você depende do Babel para a emissão.

Deixe mais rápido

Execute a verificação de tipos (tsc --noEmit) e o build em jobs paralelos, e faça cache das dependências e do build info do TS. Ambos rodam em runners de CI; runners gerenciados mais rápidos encurtam longas passagens de verificação de tipos em bases de código grandes.

O veredito

Querendo uma ferramenta que checa e emite: tsc. Querendo transpilação rápida e transformações ricas: Babel - mas adicione uma etapa de verificação de tipos com tsc --noEmit. A maioria dos pipelines combina um transpiler rápido com o tsc para checagem.

Guias relacionados