HackerTrans
TopNewTrendsCommentsPastAskShowJobs

JJMalina

no profile record

comments

JJMalina
·2 tahun yang lalu·discuss
Zod has branded types: https://zod.dev/?id=brand it works really nicely with Zod schemas
JJMalina
·2 tahun yang lalu·discuss
I think the example could be better in this article. Let's say you have a function that takes a database id, an email address, and a name. They're all strings. If you pass arguments to this function and you mess up the order for some reason then the compiler has no idea. Hopefully your unit tests catch this but it won't be as obvious. Branded types solve this problem because you can't pass a name string as an argument that is expected to be an email address.

If you argue that this is not a common problem in practice, then I tend to agree. I haven't seen code with mixed up arguments very much, but when it does happen it can have bad consequences. IMO there is not a big cost to pay to have this extra safety. In TypeScript it's ugly, but in other languages that natively support this typing like Scala, Rust, Swift and Haskell, it works nicely.