NestJS para TypeScript: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a NestJS

\n\n

NestJS (Nest) es un framework progresivo para crear aplicaciones backend eficientes, escalables y confiables en Node.js. Utiliza TypeScript como lenguaje principal y está inspirado en la arquitectura de Angular. NestJS proporciona una arquitectura de aplicación lista que ayuda a los desarrolladores a crear código bien estructurado, testeable y mantenible.

\n\n

El objetivo principal de NestJS es resolver el problema de la falta de una arquitectura clara en el ecosistema de Node.js. A diferencia de Express o Fastify, que son minimalistas y no imponen una estructura, NestJS ofrece abstracciones listas: módulos, controladores, servicios, proveedores y middleware. Esto es especialmente útil para grandes proyectos empresariales donde la previsibilidad y la estandarización del código son importantes.

\n\n

NestJS está construido sobre frameworks HTTP (por defecto Express, pero se puede usar Fastify) y añade un potente sistema de inyección de dependencias (Dependency Injection), decoradores, Guards, Interceptors, Pipes y Filters. El framework utiliza activamente los decoradores de TypeScript, lo que hace que el código sea declarativo y legible.

\n\n

Instalación de NestJS

\n\n

Para instalar NestJS necesitará Node.js (versión 16 o superior) y un gestor de paquetes npm (o yarn, pnpm).

\n\n

La forma más sencilla de empezar es usar Nest CLI:

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

Si prefiere instalar NestJS en un proyecto existente:

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

También necesitará instalar TypeScript y ts-node para el desarrollo:

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

Importante: NestJS utiliza la biblioteca reflect-metadata para trabajar con decoradores. Asegúrese de que esté importada en el archivo principal main.ts:

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

Inicio rápido con ejemplo de código

\n\n

Creemos una aplicación REST API simple con un endpoint que devuelva un saludo.

\n\n

Estructura del proyecto:

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

main.ts — punto 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 raíz:

\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 — servicio (lógica de negocio):

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

Ejecute la aplicación con el comando npm run start:dev y abra http://localhost:3000. Verá "Hello World!".

\n\n

Métodos y funciones principales de NestJS

\n\n

Veamos 10 elementos clave de NestJS que se utilizan en cada proyecto.

\n\n

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

\n

Qué hace: Define una cl

Recommendations