Decoratorul @Inject() și Tokenuri de Provideri în NestJS

core NestJS 10.x / TypeScript 5+ Q&A / Distribuie cod

Injectarea explicită a dependențelor când tipurile TypeScript sunt interfețe abstracte sau când se folosesc tokenuri String / Symbol.

Sintaxă
@Inject('PAYMENT_GATEWAY') private readonly gateway: PaymentService

Deoarece TypeScript elimină interfețele în timpul compilării JavaScript (Type Erasure), containerul IoC din NestJS nu poate detecta automat dependența doar pe baza tipului interfeței. În aceste cazuri, decoratorul @Inject('TOKEN') permite specificarea explicită a identificatorului de provider.

Tokenurile pot fi șiruri de caractere (String), simboluri unice (Symbol) sau chiar instanțe de clase abstracte, asigurând o decuplare totală a codului de implementările concrete.

Exemplu: Injectare provider pe bază de Token String
import { Injectable, Inject } from '@nestjs/common';

export interface NotificationSender {
  send(to: string, message: string): Promise;
}

@Injectable()
export class OrderService {
  constructor(
    @Inject('NOTIFICATION_SERVICE')
    private readonly notifier: NotificationSender,
  ) {}

  async completeOrder(email: string) {
    await this.notifier.send(email, 'Comanda dvs. a fost procesată cu succes!');
  }
}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Decoratorul @Inject() și Tokenuri de Provideri

Ai o nelămurire despre utilizarea comenzii Decoratorul @Inject() și Tokenuri de Provideri sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.