Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

282
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda