We're using TypeBox [0]: you use TypeScript to create JSON Schema's and it gives you a compile-time type.
From the documentation:
const T = Type.String() // const T = { type: 'string' }
type T = Static<typeof T> // type T = string
The main thing we're using it for now, is defining an OpenAPI schema and using the types in the front-end and backend, and using the schema to validate requests and responses, both client-side as well as server-side. Validation is done using avj [1].
We used Joi before and want to replace that code with JSON Schema, but that is quite the hassle. I like that TypeBox uses JSON Schema underneath, so migrating to another library should be easy.
Comments
We're using TypeBox [0]: you use TypeScript to create JSON Schema's and it gives you a compile-time type.
From the documentation:
The main thing we're using it for now, is defining an OpenAPI schema and using the types in the front-end and backend, and using the schema to validate requests and responses, both client-side as well as server-side. Validation is done using avj [1].We used Joi before and want to replace that code with JSON Schema, but that is quite the hassle. I like that TypeBox uses JSON Schema underneath, so migrating to another library should be easy.
[0] https://github.com/sinclairzx81/typebox
[1] https://ajv.js.org/