@@ -63,18 +63,11 @@ type PropMethod<T, TConstructor = any> = T extends (...args: any) => any // if i
63
63
? { new ( ) : TConstructor ; ( ) : T ; readonly prototype : TConstructor } // Create Function like constructor
64
64
: never
65
65
66
- type RequiredKeys < T , MakeDefaultRequired > = {
67
- [ K in keyof T ] : T [ K ] extends
68
- | { required : true }
69
- | ( MakeDefaultRequired extends true ? { default : any } : never )
70
- ? K
71
- : never
66
+ type RequiredKeys < T > = {
67
+ [ K in keyof T ] : T [ K ] extends { required : true } | { default : any } ? K : never
72
68
} [ keyof T ]
73
69
74
- type OptionalKeys < T , MakeDefaultRequired > = Exclude <
75
- keyof T ,
76
- RequiredKeys < T , MakeDefaultRequired >
77
- >
70
+ type OptionalKeys < T > = Exclude < keyof T , RequiredKeys < T > >
78
71
79
72
type DefaultKeys < T > = {
80
73
[ K in keyof T ] : T [ K ] extends { default : any } ? K : never
@@ -90,12 +83,9 @@ type InferPropType<T> = T extends null
90
83
? boolean
91
84
: T extends Prop < infer V , infer D > ? ( unknown extends V ? D : V ) : T
92
85
93
- export type ExtractPropTypes <
94
- O ,
95
- MakeDefaultRequired extends boolean = true
96
- > = O extends object
97
- ? { [ K in RequiredKeys < O , MakeDefaultRequired > ] : InferPropType < O [ K ] > } &
98
- { [ K in OptionalKeys < O , MakeDefaultRequired > ] ?: InferPropType < O [ K ] > }
86
+ export type ExtractPropTypes < O > = O extends object
87
+ ? { [ K in RequiredKeys < O > ] : InferPropType < O [ K ] > } &
88
+ { [ K in OptionalKeys < O > ] ?: InferPropType < O [ K ] > }
99
89
: { [ K in string ] : any }
100
90
101
91
const enum BooleanFlags {
0 commit comments