API
export type Schema<T> =
IsStringUnion <T> extends true
? [T] extends [string]
? UnionToTuple <T> extends infer U
? U extends string[]
? EnumType <U>
: never
: never
: never
: IsUnion <T> extends true
? SchemaForUnion <T>
: T extends Array <infer U>
? ArrayType < Schema <U>>
: T extends string
? string extends T
? StringType
: LiteralType <T>
: T extends number
? NumberType
: T extends boolean
? BooleanType
: T extends null
? NullType
: T extends object
? ObjectType <{
[K in keyof T]: Schema <T[K]>;
}>
: never;Schema
@typeT