diff --git a/index.d.ts b/index.d.ts index 2d234c2..da692e4 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,4 +1,5 @@ type AnySchema = NullSchema | BooleanSchema | NumberSchema | StringSchema | AnyEnumSchema | AnyArraySchema | AnyObjectSchema +type StringKeys = (keyof T) & string interface NullSchema { type: 'null' @@ -28,20 +29,20 @@ interface ArraySchema { } interface AnyObjectSchema extends ObjectSchema, string> {} -interface ObjectSchema, Required extends keyof Properties> { +interface ObjectSchema, Required extends StringKeys> { additionalProperties?: boolean type: 'object' properties: Properties required: Required[] } -interface ArrayFromSchema extends Array> {} +interface ArrayFromSchema extends Array> {} -declare type ObjectFromSchema = { +type ObjectFromSchema, Required extends StringKeys> = { [Key in keyof Properties]: (Key extends Required ? TypeFromSchema : TypeFromSchema | undefined) } -declare type TypeFromSchema = ( +type TypeFromSchema = ( Schema extends EnumSchema ? Enum : Schema extends NullSchema ? null : Schema extends BooleanSchema ? boolean @@ -61,21 +62,21 @@ declare namespace factory { } } -declare interface Validator> { +interface Validator> { (input: unknown, options?: any): input is Output errors: factory.ValidationError[] toJSON(): Schema } -declare interface Filter { +interface Filter { (input: Output, options?: any): Output } -declare interface Factory { - , Required extends keyof Properties> (schema: ObjectSchema, options?: any): Validator> +interface Factory { + , Required extends StringKeys> (schema: ObjectSchema, options?: any): Validator> (schema: Schema, options?: any): Validator - createFilter, Required extends keyof Properties> (schema: ObjectSchema, options?: any): Filter> + createFilter, Required extends StringKeys> (schema: ObjectSchema, options?: any): Filter> createFilter (schema: Schema, options?: any): Filter> }