Skip to content

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 valeur C.Some<Entity>.
  • none(name) retourne une valeur C.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.

Voir aussi ​

Diffusé sous licence MIT.