Comments (10)
Note that this is quite important to make the schema legible. (It will reduce number of stacks in JSON schema validation error.)
from ts-json-schema-generator.
So the idea is to never output something of the form
"XXXX": {
"$ref": "#/definitions/YYYY"
}
and replace all occurrences of XXXX with YYYY
from ts-json-schema-generator.
This works as expected. We output intermediate aliases when they are exported.
You can hide a alias by not exporting it:
export interface Parent {
a: A;
}
export type A = RealA;
type RealA = { realA: string };
I think only exporting types that are used more than once is going to be more surprising (and hard to implement).
from ts-json-schema-generator.
Well, in Vega-Lite use case, we need the intermediate ones because RealA is generic and A is an alias for a specific form of generic.
Thus, we can't really avoid exporting the generic.
from ts-json-schema-generator.
Hmm, I guess we could use the @hide
annotation here to skip aliases. I don't think hiding an alias that's only used once is a good idea since it may be desired by the developer.
from ts-json-schema-generator.
FWIW, adding @hide
to RealA
currently doesn't skip aliases.
from ts-json-schema-generator.
Yep, we only respect @hide
for properties right now. I suggest that we also use it to ignore aliases. Would that be the solution that we want?
from ts-json-schema-generator.
I guess that sounds good to me.
I don't know if/how @hide
currently works for aliases at all.
from ts-json-schema-generator.
It doesn't. We only use it for properties of objects and interfaces.
from ts-json-schema-generator.
and interfaces
Oh well, it's worth noting that we actually want to keep the alias and hide the original interface.
Like hiding RealA
and keep only A
in the example above.
But more practical use case is to think if we have GenericA<T>
and type A = Generic<string>
, then we want to only keep A
.
I don't think hiding an alias that's only used once is a good idea since it may be desired by the developer.
I'd argue that in most cases, there is no good reason for the developer to want to keep the chaining since "an alias that's only used once" means that all references of the original interface is called via the alias, but the schema simply treat the alias as chaining more than real "alias".
from ts-json-schema-generator.
Related Issues (20)
- Prevent simplification of UnionType HOT 1
- Add patterns to object property names
- Duplicate (nested) discriminator union values not allowed
- Invalid schema generated with circular dependencies - minimal case
- Errors out with mentions of @types/mocha HOT 1
- Function with generic keyof param crashes HOT 1
- Issue Generating JSON Schema for Types with Indexed Access References
- Support @required and $data annotations. HOT 5
- Error: Unknown node "Primitive" (ts.SyntaxKind = 162) in specific Type example HOT 8
- Generate a schema with an enum only includes the enums numeric values HOT 4
- Documentation of annotations ? HOT 1
- Enhancement: support polymorphic arrays
- Enhancement: Docusaurus documentation ? HOT 1
- Question about the goal of this package HOT 2
- Failing to create json schemas for Ocktokit types HOT 1
- tsconfig loading issue with monorepo HOT 1
- Generation failing for custom utility type HOT 1
- Support patternProperties HOT 1
- Recursive types crashes HOT 6
- Approach for renaming definition names HOT 1
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 ts-json-schema-generator.