from-schema
Version:
Infer TypeScript types from JSON schemas
13 lines (11 loc) • 1.01 kB
TypeScript
import { BooleanTsonSchema } from './BooleanTsonSchema';
import { NumberTsonSchema } from './NumberTsonSchema';
import { ObjectTsonSchema } from './ObjectTsonSchema';
import { StringTsonSchema } from './StringTsonSchema';
import { PrimitiveOrFromTsonSchema } from './PrimitiveOrFromTsonSchema';
import { FromObjectTsonSchema } from './FromObjectTsonSchema';
import { ArrayTsonSchema } from './ArrayTsonSchema';
import { EnumTsonSchemaOf } from './EnumTsonSchemaOf';
import { FromMapTsonSchema, MapTsonSchema } from './MapTsonSchema';
import { DateTsonSchema } from './DateTsonSchema';
export type FromTsonSchema<T> = T extends DateTsonSchema ? string : T extends StringTsonSchema ? string : T extends NumberTsonSchema ? number : T extends BooleanTsonSchema ? boolean : T extends EnumTsonSchemaOf<infer P> ? PrimitiveOrFromTsonSchema<P> : T extends ObjectTsonSchema ? FromObjectTsonSchema<T> : T extends MapTsonSchema ? FromMapTsonSchema<T> : T extends ArrayTsonSchema ? FromTsonSchema<T['items']>[] : never;