Mr Josselin A - TypeScript









Mixins

Références

L'actualité

Librairie

L'information

Introduction

Outre les hiérarchies OO traditionnelles, un autre moyen courant de créer des classes à partir de composants réutilisables consiste à les construire en combinant des classes partielles plus simples. Vous connaissez peut-être l'idée de mixins ou de traits pour des langues telles que Scala, et le motif a également acquis une certaine popularité dans la communauté JavaScript.

Échantillon Mixin

Dans le code ci-dessous, nous montrons comment modéliser des mixins dans TypeScript. Après le code, nous allons décomposer comment cela fonctionne.


Comprendre l'échantillon

L'exemple de code commence par les deux classes qui serviront de mixins. Vous pouvez voir que chacun se concentre sur une activité ou une capacité particulière. Nous les mélangerons plus tard pour former une nouvelle classe à partir des deux capacités.

Ensuite, nous allons créer la classe qui gérera la combinaison des deux mixins. Regardons cela plus en détail pour voir comment cela fonctionne :

La première chose que vous remarquerez peut-être dans ce qui précède est qu'au lieu d'utiliser extends, nous utilisons implements. Cela traite les classes comme des interfaces et utilise uniquement les types derrière Disposable et Activable plutôt que la mise en oeuvre. Cela signifie que nous devrons fournir l'implémentation en classe. Sauf que, c'est exactement ce que nous voulons éviter en utilisant mixins.

Pour satisfaire cette exigence, nous créons des propriétés de remplacement et leurs types pour les membres qui proviendront de nos mixins. Cela satisfait le compilateur que ces membres seront disponibles au moment de l'exécution. Cela nous permet d'obtenir le bénéfice des mixins, avec toutefois quelques frais généraux de comptabilité.

Enfin, nous mélangons nos mixins dans la classe, créant ainsi l'implémentation complète.

Enfin, nous créons une fonction d'aide qui fera le mixage pour nous. Cela va parcourir les propriétés de chacun des mixins et les copier sur la cible des mixins, en remplissant les propriétés de remplacement avec leurs implémentations.