Comments (2)
@eXigentCoder Hi,
TypeBox does't generate enum
schematics....currently. Instead it preferences anyOf
because this keyword generalizes to all types, (not limited to string, number, boolean, etc), and also means TypeBox can maintain a singular code path for inferring and processing unions (where enum
would introduce a secondary path).
This said, I am looking into supporting the enum
string representation, but it's not going to be ready for some time. The work involves implementing a infrastructure to remap Enum into Union when attempting to apply type transforms and composition, of which attempts to introduce this under the current infrastructure would be untenable given the complexity of unions.
StringEnum
Even though TypeBox doesn't generate these schematics, you can write a custom type that does. The following is one way to approach it.
import { Type, Static } from '@sinclair/typebox'
const StringEnum = <T extends string[]>(items: [...T]) =>
Type.Unsafe<T[number]>({ type: 'string', enum: items })
// ...
const T = StringEnum(['A', 'B', 'C'])
type T = Static<typeof T>
If using the TypeCompiler / Value modules to validate this type, have a read over the TypeRegistry section of the readme as you will need to register for schematics of this form.
https://github.com/sinclairzx81/typebox#typeregistry
Hope this helps
S
from typebox.
Hey there,
Thanks so much for the feedback, makes a lot of sense and thank you for a really awesome library!
from typebox.
Related Issues (20)
- Should `IsValueType` guard consider `Date`? HOT 1
- ESNext target HOT 3
- Trying to do codegen from Drizzle schemas HOT 1
- Make `default` and `examples` schema options properties type-safe HOT 2
- Indicate which files don't have "sideEffects" in package.json for improved tree shaking HOT 3
- Type.String().Optional() is accepted on ts-hint / ts-lint, and even build successfully; but of course, "Optional()" does not exists HOT 2
- Dynamic Template Literals can't be Mapped HOT 2
- How should TypeBox types be used with TS type predicates? HOT 2
- TypeCompiler.Compile incorrectly parsing `Record<any, any>`
- Error when using Composite with Ref (Unable to dereference schema with $id 'undefined') HOT 3
- Transform type keys in Record HOT 2
- Support for async validations? HOT 1
- Transform + Map/Index does not work HOT 4
- Update the error message for required properties
- Covariance issue with `TypeCheck<TSchema>` and `TypeCheck<TObject<{}>>`
- Default values in nested objects are not generated HOT 1
- Doubt on Record HOT 2
- TypeCompiler compile on Type.Strict(T) - Preflight validation check failed to guard for the given schema
- Max call stack size exceeded
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 typebox.