DEV Community

Cover image for Setup NodeJS + Typescript para iniciantes
AugustoTI
AugustoTI

Posted on

Setup NodeJS + Typescript para iniciantes

Você que está começando a aprender a Typescript e se perguntou como integrar essa ferramenta em seus projetos NodeJS. Eu venho aqui lhe guiar em como configurar um bom Setup inicial passo a passo.

Criando o nosso ambiente inicial

Crie em uma pasta/diretório em algum local do seu computador utilizando alguma Interface gráfica ou pelo terminal ( Recomendo você usar o "Git Bash" se estiver usando Windows ).

mkdir node-with-typescript
cd node-with-typescript
Enter fullscreen mode Exit fullscreen mode

Com seu editor de código preferido, abra a pasta/diretório ( Eu irei utilizar o Visual Studio Code ).

# Você tem que está dentro da pasta "node-with-typescript"
code .
Enter fullscreen mode Exit fullscreen mode

por fim, inicialize seu projeto com o NPM ( ou com Yarn se preferir ).

# NPM
npm init -y

# yarn
yarn init -y
Enter fullscreen mode Exit fullscreen mode

Você verá seu package.json criado. Ótimo, isso é o ponto de start para nosso setup 🚀.

Configurando o Typescript no projeto

Agora que temos nosso setup inicializado com Node, precisamos instalar o Typescript e configurar o ambiente para que o Node possa entende-lo.

Vamos começar instalando o Typescript e suas tipagens para o Node

# NPM
npm i -D typescript @types/node

# yarn
yarn add -D typescript @types/node
Enter fullscreen mode Exit fullscreen mode

Depois, crie o arquivo tsconfig.json na raiz do seu projeto com as seguinte configurações:

{
  "exclude": ["node_modules", "dist"],
  "include": ["src"],
  "compilerOptions": {
    "target": "ES2020",
    "isolatedModules": true,
    "moduleResolution": "Node",
    "resolveJsonModule": true,
    "baseUrl": "./",
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "outDir": "./dist",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "sourceMap": true,
    "lib": ["ESNext"],
    "strictPropertyInitialization": false,
    "skipLibCheck": true,
    "paths": {},
    "module": "CommonJS",
    "noImplicitAny": false,
    "noFallthroughCasesInSwitch": false,
    "typeRoots": ["./src/@types", "./node_modules/@types"]
  }
}
Enter fullscreen mode Exit fullscreen mode

OBS: Se você quiser saber mais sobre o que cada configuração acima faz, de uma olhada na documentação do próprio Typescript.

Em seguida, crie uma pasta na raiz do seu projeto chamada src e um arquivo de entrada qualquer ( poderia ser index.ts )

// src/index.ts
export {}

console.log('Hello Dev :D')
Enter fullscreen mode Exit fullscreen mode

Se você tentar executar esse arquivo com node, provavelmente, vai ser gerado um erro na seu console.
Isso acontece pois o NodeJS apenas consegue interpretar arquivos .js. Para resolvemos isso, basta instalar um pacote que possibilitara entender arquivos .ts

# NPM
npm i -D ts-node-dev

# yarn
yarn add -D ts-node-dev
Enter fullscreen mode Exit fullscreen mode

Agora é só criar um script no package.json e executar o comando no terminal.

{
 // ...
  "scripts": {
    "dev": "tsnd --clear --ignore-watch node_modules --transpile-only --respawn src/index.ts",
  },
 // ...
}
Enter fullscreen mode Exit fullscreen mode
# NPM
npm run dev

# yarn
yarn dev
Enter fullscreen mode Exit fullscreen mode

Pronto :) Seu NodeJS já consegue entender o Typescript 🥳🎇

Gerando um build do seu projeto

Ok, você já configurou seu setup ( por enquanto, de uma forma bem básica ) com Typescript. Mas, como já havia sido dito, o Node só entende arquivos .js, você vai usar Typescript apenas quando você esta desenvolvendo.

Em produção, você vai transformar seu código Typescript para Javascript e o Node vai entender ele nativamente.

Já configuramos o nosso tsconfig.json com as configurações de compilação. Apenas vamos criar dois script no package.json e executar no terminal.

{
 // ...
  "scripts": {
    "dev": "tsnd --clear --ignore-watch node_modules --transpile-only --respawn src/index.ts",
    "build": "rm -rf ./dist && tsc",
    "start": "node ./dist"
  },
 // ...
}
Enter fullscreen mode Exit fullscreen mode
# NPM
npm run build
npm start

# yarn
yarn build
yarn start
Enter fullscreen mode Exit fullscreen mode

Vai ser gerado na raiz do seu projeto, uma pasta chamada dist contendo o nosso código Typescript compilado para Javascript e pronto para produção 😎

Se eu te ajudei em algo, comente 😁

Top comments (5)

Collapse
 
vavatrewq profile image
WAGNER DE SOUZA MENDES

Ai sim em parabéns pela explicação, grande sucesso AugustoTI. : )

Collapse
 
mahanjs profile image
mahan-js

Ok

Collapse
 
mahanjs profile image
mahan-js

Ok

Thread Thread
 
mahanjs profile image
mahan-js

Ok

Thread Thread
 
mahanjs profile image
mahan-js

Ok