Pattern
Le pattern matching permet de déstructurer n'importe quelle donnée (union, tuple, objet, littéral, prédicat) et d'orchestrer un flux de contrôle typé grâce à match, when, whenNot, otherwise et exhaustive. Chaque branche renvoie un PatternResult, ce qui évite les switch fragiles, simplifie le chaînage avec pipe et garantit l'exhaustivité au moment de la compilation.
Comment faire les imports ?
La bibliothèque expose les namespaces DPattern et P depuis l'entrée principale ou en import direct (tree-shaking friendly).
import { DPattern, P } from "@duplojs/utils";
import * as DPattern from "@duplojs/utils/pattern";
import * as P from "@duplojs/utils/pattern";Exécution du matching
match
Associe un motif et une fonction de transformation. Retourne un PatternResult quand l'entrée correspond exactement au motif (primitive, tuple, objet, union...).
matchWithString
Distribue exhaustivement une union de chaînes littérales vers des handlers typés.
matchWithStringOtherwise
Traite certaines chaînes littérales et transmet les cas restants à un fallback typé.
matchWithNumber
Distribue exhaustivement une union de nombres littéraux vers des handlers typés.
matchWithNumberOtherwise
Traite certains nombres littéraux et transmet les cas restants à un fallback typé.
when
Ajoute une garde (type predicate ou boolean) dans un pipeline. Si la condition est vraie, la fonction associée est exécutée et son résultat est encapsulé.
whenNot
Ajoute une garde (type predicate ou boolean) dans un pipeline. Si la condition est fausse, la fonction associée est exécutée et son résultat est encapsulé.
otherwise
Définit le fallback appelé lorsque plus aucun motif n'a correspondu. Très utile pour fermer un pipe après plusieurs when.
exhaustive
Dépaquette un PatternResult pour récupérer la valeur finale et force TypeScript à vérifier que toutes les branches ont été traitées.
Construction et vérification des motifs
isMatch
Teste impérativement si une valeur correspond à un motif et renvoie un type guard (value is ...). Pratique pour les conditions simples sans déclencher de pipeline.
union
Compose plusieurs motifs dans un seul helper réutilisable (ToolPattern). Garantit que l'entrée correspond à l'un des motifs passés (en profondeur sur objets/tableaux).
