NewType
Un NewType est un type conçu pour répondre aux exigences métier, tout en étant basé sur un type primitif (ou une structure de données) existant. Il permet d'ajouter des contraintes et des règles spécifiques, garantissant que les valeurs respectent les conditions définies par le métier.
Exemple
Fonctionnement
Un NewType est un wrapper typé qui :
- valide une entrée via un
DataParser(DP.string(),DP.number(), etc.) - applique éventuellement une ou plusieurs contraintes
- « brand » la valeur avec un nom (ex:
"userId") pour éviter les mélanges accidentels
Vous déclarez un NewType via C.createNewType(...), ce qui retourne un handler. Ce handler sert ensuite à créer des valeurs sûres au runtime, tout en conservant un typage précis côté TypeScript.
Créer un NewType
Créer un NewType, c'est définir :
- un nom (ex:
"userId") - un
DataParser(ex:DP.number()) - des contraintes optionnelles (ex:
C.Positive,C.Email, ...)
Pour récupérer le type du NewType généré, utilisez :
type UserId = C.GetNewType<typeof UserId>;Méthodes et Propriétés
Un NewTypeHandler expose les mêmes méthodes de création/validation que les autres handlers Clean, ainsi que quelques propriétés.
Méthodes
create()
function create(
value: RawType | Primitive<RawType>
): EitherRight<NewType<NewTypeName, RawType, ConstraintName>> | EitherLeft<DP.DataParserError>createOrThrow()
function createOrThrow(
value: RawType | Primitive<RawType>
): NewType<NewTypeName, RawType, ConstraintName>Lève C.CreateNewTypeError en cas d'échec de validation.
createWithUnknown()
function createWithUnknown(
value: unknown
): EitherRight<NewType<NewTypeName, RawType, ConstraintName>> | EitherLeft<DP.DataParserError>createWithUnknownOrThrow()
function createWithUnknownOrThrow(
value: unknown
): NewType<NewTypeName, RawType, ConstraintName>Lève C.CreateNewTypeError en cas d'échec de validation.
is()
function is(
value: unknown
): value is NewType<NewTypeName, RawType, ConstraintName>Propriétés
name
Le nom unique du NewType (ex: "userId").
dataParser
Le DataParser utilisé pour valider la donnée (incluant les checkers ajoutés par les contraintes).
constrains
La liste des contraintes appliquées au NewType.
