NestJS para TypeScript: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao NestJS

\n\n

NestJS (Nest) é um framework progressivo para criar aplicações server-side eficientes, escaláveis e confiáveis em Node.js. Ele usa TypeScript como linguagem principal e é inspirado na arquitetura do Angular. O NestJS fornece uma arquitetura de aplicação pronta que ajuda desenvolvedores a criar código bem estruturado, testável e de fácil manutenção.

\n\n

O principal objetivo do NestJS é resolver o problema da falta de uma arquitetura clara no ecossistema Node.js. Ao contrário do Express ou Fastify, que são minimalistas e não impõem uma estrutura, o NestJS oferece abstrações prontas: módulos, controladores, serviços, provedores e middleware. Isso é especialmente útil para grandes projetos corporativos, onde a previsibilidade e a padronização do código são importantes.

\n\n

O NestJS é construído sobre frameworks HTTP (por padrão Express, mas pode usar Fastify) e adiciona a eles um poderoso sistema de injeção de dependência (Dependency Injection), decoradores, Guards, Interceptors, Pipes e Filters. O framework usa ativamente decoradores do TypeScript, tornando o código declarativo e legível.

\n\n

Instalação do NestJS

\n\n

Para instalar o NestJS, você precisará do Node.js (versão 16 ou superior) e de um gerenciador de pacotes npm (ou yarn, pnpm).

\n\n

A maneira mais fácil de começar é usar o Nest CLI:

\n\n
npm install -g @nestjs/cli\nnest new my-nest-project\ncd my-nest-project\nnpm run start:dev
\n\n

Se preferir instalar o NestJS em um projeto já existente:

\n\n
npm install @nestjs/core @nestjs/common @nestjs/platform-express reflect-metadata rxjs typescript @types/node
\n\n

Também será necessário instalar o TypeScript e o ts-node para desenvolvimento:

\n\n
npm install -D typescript @types/node ts-node
\n\n

Importante: o NestJS usa a biblioteca reflect-metadata para trabalhar com decoradores. Certifique-se de que ela esteja importada no arquivo principal main.ts:

\n\n
import "reflect-metadata";
\n\n

Início rápido com exemplo de código

\n\n

Vamos criar uma aplicação REST API simples com um endpoint que retorna uma saudação.

\n\n

Estrutura do projeto:

\n
src/\n├── app.controller.ts\n├── app.module.ts\n├── app.service.ts\n└── main.ts
\n\n

main.ts — ponto de entrada:

\n
import { NestFactory } from '@nestjs/core';\nimport { AppModule } from './app.module';\n\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule);\n  await app.listen(3000);\n  console.log('Server is running on http://localhost:3000');\n}\nbootstrap();
\n\n

app.module.ts — módulo raiz:

\n
import { Module } from '@nestjs/common';\nimport { AppController } from './app.controller';\nimport { AppService } from './app.service';\n\n@Module({\n  imports: [],\n  controllers: [AppController],\n  providers: [AppService],\n})\nexport class AppModule {}
\n\n

app.controller.ts — controlador:

\n
import { Controller, Get } from '@nestjs/common';\nimport { AppService } from './app.service';\n\n@Controller()\nexport class AppController {\n  constructor(private readonly appService: AppService) {}\n\n  @Get()\n  getHello(): string {\n    return this.appService.getHello();\n  }\n}
\n\n

app.service.ts — serviço (lógica de negócios):

\n
import { Injectable } from '@nestjs/common';\n\n@Injectable()\nexport class AppService {\n  getHello(): string {\n    return 'Hello World!';\n  }\n}
\n\n

Execute a aplicação com o comando npm run start:dev e abra http://localhost:3000. Você verá "Hello World!".

\n\n

Principais métodos e funções do NestJS

\n\n

Vamos explorar 10 elementos-chave do NestJS que são usados em todos os projetos.

\n\n

1. @Module() — decorador de módulo

\n

O que faz: Define a cl

Recommendations