Esse post é uma referência para configurar um ambiente de desenvolvimento Node.js com TypeScript em 2023 o mais rápido possível. Pronto? Vamos lá!
Assumindo que você criou um novo diretório vazio para o projeto e que você está nele:
1. Inicializando um novo projeto
npm init -y
2. Instalando as dependências
npm i -D typescript ts-node-dev @types/node
A biblioteca
typescript
nos dará o compilador da linguagemtsc
ts-node-dev
é usado para executar arquivos TypeScript diretamente, sem emitir o javascript resultante (se quiser saber mais, continue lendo), observando nossos aquivos e reinicializando nosso script quando modificações são detectadasPor fim, a lib @types/node é necessária para tipar as APIs do Node.js (
process
,fs
,__dirname
,__filename
, etc)
3. Criando o arquivo tsconfig.json
npx tsc --init
Opcional: mudando a versão de saída do JavaScript
No tsconfig.json
é possível apontar uma versão de saída para o JavaScript. Na chave "target"
, use: "ES2022"
. Isso vai fazer com que tenhamos uma versão moderna de saída para o JavaScript transpilado, o que fará com que o Node possa fazer uso de recursos recentes da linguagem, otimizando o código de saída, que é o que será efetivamente executado.
4. Criando o arquivo de entrada do projeto
touch index.ts
Um singelo "Hello, TypeScript" no index.ts
:
console.log("Hello, TypeScript!)
5. Configurando um script de desenvolvimento
No arquivo package.json
, adicione o seguinte script:
...
"scripts": {
"dev": "ts-node-dev --respawn index.ts"
},
...
A mágica na verdade está na biblioteca ts-node
, que é uma lib que faz uma compilação JIT (just in time) do TypeScript e passa o código resultante para o Node. Isso faz com que possamos rodar TypeScript diretamente no Node, sem emitir os arquivos javascript resultantes. O ts-node-dev
é uma wrapper em torno do ts-node
que adiciona o recurso de observar nossos arquivos e reiniciar nosso script quando houver modificações. Isso nos dá uma experiência de desolvimento de primeira classe.
6. Rodando o script
npm run dev
Você deve ver no seu terminal algo como:
> ts-node-dev --respawn index.ts
[INFO] 14:02:46 ts-node-dev ver. 2.0.0 (using ts-node ver. 10.9.1, typescript ver. 4.9.5)
Hello, TypeScript!
Pronto! Agora você tem um ambiente de desenvolvimento com Node e TypeScript com hot reloading configurado que irá reinicializar sua aplicação toda vez que houver mudança no código.
É isto. Happy coding!