@@ -41,19 +41,17 @@ export function validate<T>(arg: any, assertion: (arg: any) => ValidationResult<
4141 ) ;
4242}
4343
44-
45- export function extendValidator < T , U > ( validator1 : Validator < T > , validator2 : Validator < U > ) : Validator < T & U > {
46- const result : any = { } ;
47-
48- for ( const key in validator1 ) {
49- result [ key ] = validator1 [ key ] ;
50- }
51-
52- for ( const key in validator2 ) {
53- result [ key ] = validator2 [ key ] ;
54- }
55-
56- return result as Validator < T & U > ;
44+ export function extendValidator < A , B > ( validator1 : Validator < A > , validator2 : Validator < B > ) : Validator < A & B > ;
45+ export function extendValidator < A , B , C > ( validator1 : Validator < A > , validator2 : Validator < B > , validator3 : Validator < C > ) : Validator < A & B & C > ;
46+ export function extendValidator < A , B , C , D > ( validator1 : Validator < A > , validator2 : Validator < B > , validator3 : Validator < C > , validator4 : Validator < D > ) : Validator < A & B & C & D > ;
47+ export function extendValidator < A , B , C , D , E > ( validator1 : Validator < A > , validator2 : Validator < B > , validator3 : Validator < C > , validator4 : Validator < D > , validator5 : Validator < E > ) : Validator < A & B & C & D & E > ;
48+ export function extendValidator < A , B , C , D , E , F > ( validator1 : Validator < A > , validator2 : Validator < B > , validator3 : Validator < C > , validator4 : Validator < D > , validator5 : Validator < E > , validator6 : Validator < F > ) : Validator < A & B & C & D & E & F > ;
49+ export function extendValidator < A , B , C , D , E , F , G > ( validator1 : Validator < A > , validator2 : Validator < B > , validator3 : Validator < C > , validator4 : Validator < D > , validator5 : Validator < E > , validator6 : Validator < F > , validator7 : Validator < G > ) : Validator < A & B & C & D & E & F & G > ;
50+ export function extendValidator < A , B , C , D , E , F , G , H > ( validator1 : Validator < A > , validator2 : Validator < B > , validator3 : Validator < C > , validator4 : Validator < D > , validator5 : Validator < E > , validator6 : Validator < F > , validator7 : Validator < G > , validator8 : Validator < H > ) : Validator < A & B & C & D & E & F & G & H > ;
51+ export function extendValidator < A , B , C , D , E , F , G , H , I > ( validator1 : Validator < A > , validator2 : Validator < B > , validator3 : Validator < C > , validator4 : Validator < D > , validator5 : Validator < E > , validator6 : Validator < F > , validator7 : Validator < G > , validator8 : Validator < H > , validator9 : Validator < I > ) : Validator < A & B & C & D & E & F & G & H & I > ;
52+ export function extendValidator < A , B , C , D , E , F , G , H , I , J > ( validator1 : Validator < A > , validator2 : Validator < B > , validator3 : Validator < C > , validator4 : Validator < D > , validator5 : Validator < E > , validator6 : Validator < F > , validator7 : Validator < G > , validator8 : Validator < H > , validator9 : Validator < I > , validator10 : Validator < J > ) : Validator < A & B & C & D & E & F & G & H & I & J > ;
53+ export function extendValidator ( ...validators : Validator < any > [ ] ) : Validator < any > {
54+ return validators . reduce ( ( validator , currentValidator ) => ( { ...validator , ...currentValidator } ) , { } as Validator < any > ) ;
5755}
5856
5957
0 commit comments