Comments (2)
@MatthewAry Hiya,
Have pushed a fix for this on 0.32.34. You should be able to embed template within templates as per your original example. The following should map as you expect (note: you may need to clear your browser cache)
This issue was specific to the inference, where the runtime mapping was working as expected. TypeBox is due to revisit the template literal implementation under the revised inference architecture (which was added on 0.32.x), there's are still known issues with embedding unions in unions in template literals in unions (or some nested permutation of) (which is technically possible in TS, but quite challenging to map), This said, supporting embedded template literals in template literals was envisioned for the first pass of this feature (so thanks for finding this)
If you run into any issues, feel free to ping on this thread.
Cheers
S
from typebox.
@MatthewAry Hi, thanks for reporting!
On mappingType, I expected the result to match to:
You can get this to work with the following.
function baseNumericComparableLiteral<T extends string>(key: T) {
// avoid embedding template literal in template literal
return Type.TemplateLiteral([Type.Literal(key), Type.Union([
Type.Literal('gt'),
Type.Literal('gte'),
Type.Literal('lt'),
Type.Literal('lte'),
Type.Literal('eq'),
Type.Literal('ne'),
])])
}
const literals = baseNumericComparableLiteral('key')
type literalsType = Static<typeof literals> // type literalsType = "keygt" | "keygte" | "keylt" | "keylte" | "keyeq" | "keyne"
const mapping = Type.Mapped(literals, K => Type.Date())
type mappingType = Static<typeof mapping> // {
// "keygt": Date
// "keygte": Date
// "keylt": Date
// "keylte": Date
// "keyeq": Date
// "keyne": Date
// }
However I would expect the embedded template literal (as per your example), to correctly map also. I will take a look at this.
Let me know if the above helps
Cheers
S
from typebox.
Related Issues (20)
- unique id for schemas generated with Type.Object() HOT 6
- Custom paths for custom validation errors HOT 2
- Composite Union type does not work HOT 3
- Type.Recursive does not work with Type.Transform for StaticDecode
- Issue regarding nested objects when using Value.Default HOT 5
- Enum type inferred as never when using Type.Mapped() HOT 2
- 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
- How should TypeBox types be used with TS type predicates? HOT 2
- TypeCompiler.Compile incorrectly parsing `Record<any, any>` HOT 7
- Error when using Composite with Ref (Unable to dereference schema with $id 'undefined') HOT 3
- Transform type keys in Record HOT 2
- Is it possible to add support to the Type.String additional properties for the enum keyword HOT 2
- Support for async validations? HOT 1
- Transform + Map/Index does not work 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 typebox.