Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

283
Vistas
¿Cómo funciona DI en NestJS?

Existe el siguiente código NestJS estándar:

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

También está el código para la aplicación del módulo:

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

No entiendo cómo la aplicación entiende que el controlador de la aplicación espera obtener el servicio de la aplicación como primer argumento. Al principio pensé que la aplicación solo mira la matriz de proveedores y coloca todos los servicios de esta matriz en el constructor del controlador. Pero podría cambiar el código de esta manera:

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

Ahora puedo usar este NewService no solo en la clase AppController , sino también en la clase AppService . ¿Cómo sabe la aplicación que ahora podría usar NewService en la clase AppService ? Ahora no entiendo cómo podríamos hacerlo, porque TypeScript es solo azúcar de sintaxis y existe solo hasta que se realice la compilación y, como sé, la aplicación no pudo ver el tipo de argumento en AppService (por ejemplo , fileService: FileService ) y poner el servicio correcto como argumento cuando se creará AppService . Necesito detalles técnicos bajo la cubierta de este mecanismo, no solo casos de uso del tutorial oficial.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Al registrarlo en la matriz de proveedores, lo registra en el contenedor de Nest IoC.

Si revisa el código js compilado, encontrará algo como

 WeatherHttpProvider = __decorate([ (0, common_1.Injectable)(), __param(1, (0, common_1.Inject)(weather_parser_1.WEATHER_PARSER)), __metadata("design:paramtypes", [axios_1.HttpService, Object]) ], WeatherHttpProvider);

que en este caso le dice a WeatherHttpProvider sobre los parámetros de constructor inyectados. De esta manera, sabe qué clase del contenedor IoC usar.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda