I have been on the market for such a semi-generic interface/type definition for a while now and I'll try Spot.
in theory typedefs should be able to do what spot does, it is just very hard to write formalized code so it will take us a while before we get there
I always thought these examples were real ADT's:
``` type Bool = true | false;
type Maybe<T> = T | null;
type SumTypeExample = Bool | Maybe<Bool>
interface ProductType1 { b: Bool c: Maybe<Bool> }
interface ProductType2 { s: "a" | "b" | "c" }
interface ProductTypeComposite extends ProductType1, ProductType2 {} ```
Can you explain what's the difference?
This sounds interesting. Can you expound a bit more?
This is vague and anecdotal but I find about 80% of what I want to do in TS with types I find very easy to do, 10% I find annoying but possible, and then maybe 10% it just doesn't work.
I'm curious if there's a root cause here.
It looks great: definitions are written in TypeScript, which as it turns out, can express really advanced data models quite well. Spot can translate TypeScript models (they must start with the API definition, but that can be just a single entry point to the model) to JSONSchema, OpenAPI, and from those, to basically any language supported by them (Java, Kotlin, Swift, C# and many others).
Spot also can create a mock server to provide testing, random data fitting the model, as well as a server to view the OpenAPI definition online.
It's really great.
The project posted here seems to not do any of the useful things I expect, which Spot does (though it's still very new and there's some bugs) so I thought others would like to know about it.