Maybe
Maybe définit un contrat métier explicite pour représenter une entité présente (some) ou absente (none) sans exposer null/undefined dans le domaine.
Exemple
Syntaxe
Type Maybe
typescript
type Maybe<Entity extends C.Entity> =
| C.Some<Entity>
| C.None<C.GetKindValue<typeof C.entityKind, Entity>>Constructeur some
typescript
function some<Entity extends C.Entity>(
entity: Entity
): C.Some<Entity>Constructeur none
typescript
function none<EntityName extends string>(
entityName: EntityName
): C.None<EntityName>Parametres
entity: entité métier valide à encapsuler dans la branche "présente".entityName: nom de l'entité métier pour produire la branche "absente" typée.
Valeur de retour
some(entity)retourne une valeurC.Some<Entity>.none(name)retourne une valeurC.None<name>.- les deux respectent le contrat
C.Maybe<Entity>quand le nom d'entité correspond.
Pourquoi c'est utile en métier ?
Le type Maybe permet de définir le contrat d'un use case avant l'implémentation :
- un résultat trouvé est explicitement typé avec
some(...) - une absence est explicitement typée avec
none(...) - le contrat reste lisible et stable côté domaine.
