Aller au contenu
  • Nos offres
  • Blog
  • Contact
  • Carrières
Menu
  • Nos offres
  • Blog
  • Contact
  • Carrières
Inscrivez-vous à la newsletter

Inscrivez-vous à la newsletter

Abonnez-vous maintenant et nous vous tiendrons au courant.
Nous respectons votre vie privée. Vous pouvez vous désabonner à tout moment.

Blog

  • Accueil
  • Actualités
  • Cloud
  • Infrastructure
  • Données / Sécurité
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
Menu
  • Accueil
  • Actualités
  • Cloud
  • Infrastructure
  • Données / Sécurité
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
  • le 15/06/2020
  • HAMZA
  • Développement

Typescript dependency injection : configuration d’InversifyJS IoC pour un projet TypeScript

Partager sur linkedin
Partager sur twitter
Partager sur facebook

Plutôt que de créer manuellement les dépendances des classes à chaque fois que nous voulons utiliser une classe particulière, nous pourrions mettre en place un mécanisme qui pourrait les créer pour nous et fournir automatiquement les dépendances de cette classe.
Un tel mécanisme s’appelle IoC (Inversion of Control) et dans cet article, je voudrais montrer comment vous pouvez améliorer votre code TypeScript en en configurant un.

 

Ajout de Inversify au projet Typescript

Pour implémenter l’injection de dépendance au projet, on va utiliser Inversify comme un conteneur IoC.

Au début, on doit ajouter inversify et reflect-metadata au projet :

  • yarn add -D inversify reflect-metadata

puis on va mettre a jour le fichier tsconfig.json :

 

 

 

 

 

 

 

Configuration du projet après l’utilisation de l’injection de dépendance (DI)

Une fois InversifyJS installé et le compilateur TypeScript configuré pour prendre en charge InversifyJS, nous pouvons mettre à jour le code de notre application.

Inversify.ts

Avant de profiter de l’injection de dépendances, nous devons configurer le conteneur IoC, afin que les classes puissent résoudre leurs propres dépendances à partir du conteneur centralisé.

Pour ce faire, nous créons un nouveau conteneur inversify et lui fournissons les liaisons des classes. Les liaisons permettent au conteneur de mapper la dépendance demandée avec une instance de celui-ci.

 

 

 

 

 

 

Handler.ts

Une fois le conteneur configuré, les dépendances peuvent être rendues injectables en important le décorateur injectable des classes inversify et decorating avec @injectable decorators. Ce décorateur sera géré et appliqué à la sortie JavaScript à l’aide du package Reflect-Metadata lors de la compilation TypeScript.

 

Index.ts

On commence par l’ajout de import ‘reflect-metadata’; Il est requis par inversify pour appliquer les décorateurs @inject () et @injectable à la sortie compilée de l’application.

Après cela, nous pouvons importer le conteneur pour l’application :

 

Conclusion

L’injection de dépendances est un pattern qui supprime la responsabilité de créer manuellement des dépendances de classe à chaque fois que nous voulons utiliser une classe particulière. Au lieu de cela, nous configurons le conteneur Inversion de contrôle (IoC) pour le faire pour nous.

Les principaux avantages que je vois dans ce modèle sont que nous pouvons « mocker » et remplacer l’instance concrète de dépendance. Ainsi, nous pouvons faciliter l’écriture de tests de notre classe sans avoir besoin de créer manuellement toutes les dépendances. Et en utilisant des interfaces et un conteneur IoC, nous pouvons rendre notre code plus extensible.

 

HAMZA
HAMZA
Voir tous ses articles

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Articles récents
  • Azure Database pour PostgreSQL [PaaS]
  • Azure Logic Apps : l’outil d’intégration Cloud de Microsoft
  • Purge automatique des archivelogs en PL/SQL
  • ASM et l’importance du usable_file_mb
  • Préparer un Windows Server 2003 pour une migration sur Azure

Mentions légales & Politique de confidentialité

En poursuivant votre navigation, vous acceptez l'utilisation de cookies tiers destinés à réaliser des statistiques de visites et de suivi. Accepter Refuser Personnaliser En savoir plus
Politique de confidentialité et cookies

Politique de confidentialité

Les informations collectées au travers de nos cookies sont exploitées à des fins statistiques (Google Analytics).
Google Analytics
Enregistrer & appliquer

8 JUIN 2022 A PARIS | 8H30 - 18H30

TECH FOR CLIMATE ?

Opportunités et limites de la technologie pour faire face au défi climatique

Programme & Inscriptions

Un évènement imaginé avec 🖤 par Constellation