Comments (8)
I think I understand it now. Cool idea. Once I'm done with my bachelor thesis and hopefully have some more time, I can take a closer look at it.
from valibot.
If you have time and interest, you can try to implement this feature and submit a PR. I will check your code and give you feedback.
from valibot.
The brand
feature is now available 🎉
from valibot.
Can you explain in which specific use cases brand
is useful and offers an advantage? I have not quite understood it yet.
from valibot.
Nominal type matching is highly requested typescript feature, and until typescript doesn't have it, branded types is alternative.
See some resources of using them
https://egghead.io/blog/using-branded-types-in-typescript
https://twitter.com/mattpocockuk/status/1625173884885401600
from valibot.
Thanks! I should mention that zod also have brand utility, docs. I think it would simplify migration to valibot. See later great example of implementing nominal types in other lib @effect/data
from valibot.
@fabian-hiller if you have finished your degree and you are not yet familiar with this, then you are missing one of the best type safety features and it's a good time for you to investigate it 😁. This exists in several languages with different names, but the same concept:
- ocaml: phantom types
- rust: newtype pattern
- F# constrained types (I think)
Since you seem to be interested in the type safety topic I really recommend taking a look at "domain modeling made functional", for some eye-opening usage examples. For me they are super valuable for IDs (what is that string? A user ID or a car ID?)
from valibot.
Thank you. I will have a look at it.
from valibot.
Related Issues (20)
- [Proposal] Considering Biome for formating and linting HOT 1
- Branded schema doesn't provide the type guard thru the `is`. HOT 2
- Add CIDR Schema Type HOT 3
- Reporting of Errors (ValiError Format compared with ZodError Format) HOT 3
- Nullable, how can i do
- isoTimestamp only supports decimal fraction up to 3 digits HOT 8
- Cannot use `brand` with `url` or `email` HOT 1
- Document minimum typescript version HOT 7
- Nextjs build Failed HOT 6
- How can I define a schema so that it can be validated as a function? HOT 1
- getDefaults returns undefined for optional with a default of empty string or false HOT 2
- The validation of the object is not rigorous enough HOT 3
- Optional Objects with Literal Fields and Raw Default Result in "| undefined" Type HOT 1
- union(): Union wrong behavior when type validation pass HOT 2
- A GPT companion for the Zod to Valibot conversion HOT 1
- `union()` of object with overlapping field drops other fields HOT 4
- Supporte Metadata like description
- Support non-string array in `picklist` HOT 4
- customAsync not resolved inside issues? HOT 4
- Change omit() parameter type to `readonly TKeys[]` HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from valibot.