forwardRef

NestJS 🟡 Mid

Définition

Fonction utilitaire qui résout les dépendances circulaires en retardant la résolution de la référence. Utilise un wrapper de fonction pour différer l'évaluation.

Analogie

Comme dire 'je te présenterai mon collègué quand il arrivera' plutôt que d'exiger sa présence immédiate.

Exemple de code

@Injectable()
export class CatService {
  constructor(
    @Inject(forwardRef(() => DogService))
    private dogService: DogService,
  ) {}
}

Cas d'usage

Résoudre les dépendances circulaires entre deux services ou modules qui se réfèrent mutuellement.

Anti-pattern

Utiliser forwardRef comme solution par défaut au lieu de repenser l'architecture pour éliminer les cycles.
#core#interview

En entretien

  1. Explique-moi ce que fait forwardRef concrètement.

    C'est une fonction utilitaire qui résout les dépendances circulaires en retardant la résolution de la référence via un wrapper de fonction, un peu comme dire 'je te présenterai mon collègue quand il arrivera' plutôt que d'exiger sa présence immédiate. Elle sert typiquement dans @Inject(forwardRef(() => DogService)) pour deux services qui se réfèrent mutuellement.

  2. Est-ce que forwardRef doit devenir ton réflexe dès qu'un cycle apparaît ?

    Non, l'anti-pattern décrit c'est justement d'utiliser forwardRef comme solution par défaut au lieu de repenser l'architecture pour éliminer les cycles. C'est un outil de dépannage, pas une solution d'architecture pérenne.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre