C'est quoi Effect ? Comprendre les types, les erreurs et l'exécution en TypeScript
C'est quoi Effect ? Comprendre les types, les erreurs et l'exécution en TypeScript
L'Effect est un type qui modélise une computation de manière paresseuse (lazy), c'est-à-dire qu'elle n'est pas exécutée à sa création mais uniquement lorsqu'on la lance. Contrairement au JavaScript standard qui s'exécute immédiatement, un Effect encapsule trois éléments : le type de succès, le type d'erreur et les dépendances (requirements) nécessaires à l'exécution.
Cette structure permet de distinguer clairement les erreurs connues (modélisées dans le type) des erreurs inconnues, et de forcer le développeur à gérer les cas d'échec. Pour exécuter un effet, on utilise des fonctions comme runSync pour du code synchrone ou runPromise pour de l'asynchrone. On peut aussi utiliser runFork pour créer une fibre, qui est l'unité d'exécution de l'effet.
Exemple : Si on définit un effet de division, on peut spécifier qu'il renvoie un nombre en cas de succès ou une erreur spécifique si le diviseur est zéro. Le type de l'effet reflète cette possibilité d'erreur, contrairement à une exception classique qui n'est visible que par la documentation. Pour écrire du code lisible, on peut utiliser des générateurs avec yield pour enchaîner les effets, évitant ainsi les callbacks ou les longues chaînes de .then().