Skip to content

Commit c634f4b

Browse files
committedAug 9, 2018
Refactor to more verbose naming
1 parent 3da57a4 commit c634f4b

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed
 

‎index.d.ts

+22-22
Original file line numberDiff line numberDiff line change
@@ -17,38 +17,38 @@ interface StringSchema {
1717
}
1818

1919
interface AnyEnumSchema extends EnumSchema<any> {}
20-
interface EnumSchema<T> {
21-
enum: T[]
20+
interface EnumSchema<Enum> {
21+
enum: Enum[]
2222
}
2323

2424
interface AnyArraySchema extends ArraySchema<AnySchema> {}
25-
interface ArraySchema<T extends AnySchema> {
25+
interface ArraySchema<ItemSchema extends AnySchema> {
2626
type: 'array'
27-
items: T
27+
items: ItemSchema
2828
}
2929

3030
interface AnyObjectSchema extends ObjectSchema<Record<string, AnySchema>, string> {}
31-
interface ObjectSchema<T extends Record<string, AnySchema>, R extends keyof T> {
31+
interface ObjectSchema<Properties extends Record<string, AnySchema>, Required extends keyof Properties> {
3232
additionalProperties?: boolean
3333
type: 'object'
34-
properties: T
35-
required: R[]
34+
properties: Properties
35+
required: Required[]
3636
}
3737

38-
interface ExtractedSchemaArray<T> extends Array<ExtractSchemaType<T>> {}
38+
interface ExtractedSchemaArray<Schema> extends Array<ExtractSchemaType<Schema>> {}
3939

40-
declare type ExtractedSchemaObject<T, R> = {
41-
[K in keyof T]: (K extends R ? ExtractSchemaType<T[K]> : ExtractSchemaType<T[K]> | undefined)
40+
declare type ExtractedSchemaObject<Properties, Required> = {
41+
[Key in keyof Properties]: (Key extends Required ? ExtractSchemaType<Properties[Key]> : ExtractSchemaType<Properties[Key]> | undefined)
4242
}
4343

44-
declare type ExtractSchemaType<Type> = (
45-
Type extends EnumSchema<infer T> ? T
46-
: Type extends NullSchema ? null
47-
: Type extends BooleanSchema ? boolean
48-
: Type extends NumberSchema ? number
49-
: Type extends StringSchema ? string
50-
: Type extends ArraySchema<infer T> ? ExtractedSchemaArray<T>
51-
: Type extends ObjectSchema<infer T, infer R> ? ExtractedSchemaObject<T, R>
44+
declare type ExtractSchemaType<Schema> = (
45+
Schema extends EnumSchema<infer Enum> ? Enum
46+
: Schema extends NullSchema ? null
47+
: Schema extends BooleanSchema ? boolean
48+
: Schema extends NumberSchema ? number
49+
: Schema extends StringSchema ? string
50+
: Schema extends ArraySchema<infer ItemSchema> ? ExtractedSchemaArray<ItemSchema>
51+
: Schema extends ObjectSchema<infer Properties, infer Required> ? ExtractedSchemaObject<Properties, Required>
5252
: never
5353
)
5454

@@ -72,11 +72,11 @@ declare interface Filter<Output> {
7272
}
7373

7474
declare interface Factory {
75-
<T extends Record<string, AnySchema>, R extends keyof T> (schema: ObjectSchema<T, R>, options?: any): Validator<ObjectSchema<T, R>>
76-
<T extends AnySchema> (schema: T, options?: any): Validator<T>
75+
<Properties extends Record<string, AnySchema>, Required extends keyof Properties> (schema: ObjectSchema<Properties, Required>, options?: any): Validator<ObjectSchema<Properties, Required>>
76+
<Schema extends AnySchema> (schema: Schema, options?: any): Validator<Schema>
7777

78-
createFilter<T extends Record<string, AnySchema>, R extends keyof T> (schema: ObjectSchema<T, R>, options?: any): Filter<ExtractedSchemaObject<T, R>>
79-
createFilter<T extends AnySchema> (schema: T, options?: any): Filter<ExtractSchemaType<T>>
78+
createFilter<Properties extends Record<string, AnySchema>, Required extends keyof Properties> (schema: ObjectSchema<Properties, Required>, options?: any): Filter<ExtractedSchemaObject<Properties, Required>>
79+
createFilter<Schema extends AnySchema> (schema: Schema, options?: any): Filter<ExtractSchemaType<Schema>>
8080
}
8181

8282
declare const factory: Factory

0 commit comments

Comments
 (0)
Please sign in to comment.