Nouveau système de surcharge des scripts

Afin de faciliter le développement des surcharges, le polymorphisme a été introduit dans les scripts.

Pour être dans les meilleures conditions, le Code Behind a été introduit pour que le projet ne comporte plus que des classes TypeScript.
Au sens Divalto One, les fichiers de type Script deviennent obsolètes et nous ne manipulons que des librairies.

Pour être surchargeable, les classes doivent être préfixées par les mots clé : export default.
C'est le moyen de rendre votre classe visible aux autres.

Spécialisation

Dans ce contexte, la librairie standard n’est plus dupliquée, elle ne contiendra que le code surchargé.

La première ligne permet d’importer la définition de la librairie standard. Le corps de la librairie surchargée est vierge, c’est une librairie qui se comportera exactement comme celle de base.

Lorsqu’on veut surcharger une méthode de la librairie de base, il suffit de commencer à saisir son nom, l’autocomplétion facilitera la sélection et la génération de la méthode surchargée.

La majorité des méthodes sont asynchrones, pensez à définir votre méthode étant également asynchrone avec le mot clé async

Proposition des méthodes surchargeables

Pour appeler le traitement de base d’une méthode, il suffit de l’appeler avec le mot clé super.

La majorité des méthodes sont asynchrones, pensez à utiliser le mot clé await pour attendre la fin du traitement de base avant le traitement spécifique.

 

Vous avez entièrement le contrôle sur le moment auquel le traitement de base sera exécuté. Vous avez la possibilité d’exécuter du code avant ou après le traitement de base, ou décider de ne pas l’exécuter du tout.

Import de librairies

Dans les versions précédentes, pour pouvoir utiliser une librairie, il fallait appeler avec le service $library

const helper = await $library.getLibraryAsync('helper'); helper.callMe();

Dans cette nouvelle version, il suffit d’utiliser la même mécanique que pour l’import de la classe standard qu’on souhaite surcharger

import helperClass from '@Standard/Default/helper'; export default class mylib { async callMeAsync() { const helper = new helperClass(); helper.callMe(); } }

 

Importer la bonne version de librairie

Rappel, lorsqu’un fichier de configuration est demandé au runtime, la version qui sera finalement chargée suit l’ordre de priorité suivante

  1. Fichier dans l’espace du projet selon le DeviceType

  2. Fichier dans l’espace du projet dans Common

  3. Fichier dans l’espace standard selon le DeviceType

  4. Fichier dans l’espace standard dans Common

L’import de librairie décloisonne ces niveaux en permettant de cibler la bonne librairie.

Le format de l’import est défini comme suit

import libClass from '@Space/DeviceType/libName';

Ainsi, nous pouvons avoir par exemple les déclinaisons suivantes

 

Pour importer une librairie tout en respectant l’ordre de priorité, il faut utiliser l’espace @Global sans préciser le DeviceType