3 ms·
My preferred solution would be: You have 2 types UnvalidatedEmail ValidatedEmail Then ValidatedEmail is only created in the function that does the validatio
by mejutoco 8mo ago
My preferred solution would be:
You have 2 types
UnvalidatedEmail
ValidatedEmail
Then ValidatedEmail is only created in the function that does the validation: a function that takes an UnvalidatedEmail and returns a ValidatedEmail or an error object.
- squeaky-clean 8mo agoThat can work in some situations. One thing I won't like about it in some other situations is that you now have 2 nullable fields associated with your user, or whatever that email is associated with. It's annoying or even impossible in a lot of systems to have a guaranteed validation that user.UnvalidatedEmail or user.ValidatedEmail must exist but not both.
- mejutoco 8mo agoI see. In my example they would be just types and internally a newtype string. So an object could have a field email: UnvalidatedEmail | ValidatedEmail Nothing would be nullable there in that case. You could match on the type and break if not all cases are handled.