Como executar TypeScript a partir da linha de comando: do simples ao profissional
\n\nVocê escreveu seu primeiro script em TypeScript. Tudo parece bonito: tipagem forte, sintaxe concisa, autocompletar na IDE. Mas quando você abre o terminal e digita node script.ts, o Node.js exibe um erro. Familiar?
TypeScript é uma extensão do JavaScript, e o Node.js não consegue executar arquivos .ts diretamente. Neste artigo, vamos abordar todas as maneiras reais de executar TypeScript a partir da linha de comando. Você aprenderá a diferença entre execução rápida e compilação para produção, quando usar ts-node e quando usar tsx, e como não se confundir com as ferramentas.
Baseamo-nos em uma pergunta popular do Stack Overflow (mais de 500 mil visualizações), mas fornecemos não apenas uma resposta, mas uma comparação completa das abordagens. Vamos lá!
\n\nPor que o Node.js não entende TypeScript?
\n\nAntes de correr para as ferramentas, vamos entender o essencial. Quando você escreve:
\n\nconst greet = (name: string): string => {\n return `Hello, ${name}!`;\n};\nconsole.log(greet('PythonLib'));\n\nO Node.js vê : string e não sabe o que fazer com isso. JavaScript não suporta tipagem estática como parte da sintaxe. Portanto, o TypeScript precisa primeiro ser transpilado (convertido) para JavaScript, e só então executado.
Existem duas abordagens fundamentalmente diferentes:
\n- \n
- Duas etapas: primeiro compilar com
tsc script.ts, depois executar comnode script.js. \n - Uma etapa: usar utilitários que fazem ambas as ações para você "em tempo real" (compilação JIT). \n
Abordaremos ambas as opções, mas começaremos com a mais popular — a de uma etapa.
\n\nMétodo 1: ts-node — o clássico do gênero
\n\nts-node é um mecanismo de execução TypeScript para Node.js. Ele compila o código na memória e o passa imediatamente para o Node.js. Esta é a maneira mais antiga e testada de executar TypeScript a partir da linha de comando sem complicações desnecessárias.
Instalação e execução
\n\nnpm install -g ts-node typescript @types/node\nts-node script.ts\n\nPronto. Seu arquivo será executado sem criar um arquivo JS intermediário. Nos bastidores, o ts-node usa o compilador TypeScript padrão (tsc), mas de forma transparente para o desenvolvedor.
Exemplo: trabalhando com API
\n\n// api-demo.ts\nimport axios from 'axios';\n\ninterface Post {\n userId: number;\n id: number;\n title: string;\n}\n\nasync function fetchFirstPost(): Promise<Post> {\n const response = await axios.get<Post>('https://jsonplaceholder.typicode.com/posts/1');\n return response.data;\n}\n\nfetchFirstPost().then(post => console.log(post.title));\n// Saída: sunt aut facere repellat provident occaecati excepturi optio reprehenderit\n\nExecutamos: ts-node api-demo.ts. O resultado aparece imediatamente no console.
Prós e contras do ts-node
\n\n- \n
- + Simplicidade: um comando em vez de dois. \n
- + Suporte a
tsconfig.json: todas as suas configurações do TypeScript são consideradas. \n - + REPL: o comando
ts-nodesem argumentos abre um shell interativo do TypeScript. \n - - Velocidade: a cada execução ocorre compilação, o que é perceptível em projetos grandes. \n
- - Consumo de memória: em execuções longas (por exemplo, em modo watch), pode consumir mais RAM. \n
Quando usar: para scripts, protótipos, pequenos utilitários. Se você precisa executar um arquivo TypeScript a partir da linha de comando rapidamente e sem configuração — ts-node é a sua escolha.
\n\nMétodo 2: tsx — o sucessor moderno e rápido
\n\ntsx (TypeScript Execute) é um utilitário mais novo,