2014-07-13 01:04:16 +02:00
//// [genericCallWithConstructorTypedArguments5.ts]
// Generic call with parameter of object type with member of function type of n args passed object whose associated member is call signature with n+1 args
function foo < T , U > ( arg : { cb : new ( t : T ) = > U } ) {
return new arg . cb ( null ) ;
}
var arg : { cb : new < T > ( x : T ) = > string } ;
var r = foo ( arg ) ; // {}
// more args not allowed
var arg2 : { cb : new < T > ( x : T , y : T ) = > string } ;
var r2 = foo ( arg2 ) ; // error
var arg3 : { cb : new ( x : string , y : number ) = > string } ;
var r3 = foo ( arg3 ) ; // error
function foo2 < T , U > ( arg : { cb : new ( t : T , t2 : T ) = > U } ) {
return new arg . cb ( null , null ) ;
}
// fewer args ok
var r4 = foo ( arg ) ; // {}
var arg4 : { cb : new ( x : string ) = > string } ;
var r6 = foo ( arg4 ) ; // string
var arg5 : { cb : new ( ) = > string } ;
var r7 = foo ( arg5 ) ; // string
//// [genericCallWithConstructorTypedArguments5.js]
2014-08-14 15:21:30 +02:00
// Generic call with parameter of object type with member of function type of n args passed object whose associated member is call signature with n+1 args
2014-07-13 01:04:16 +02:00
function foo ( arg ) {
return new arg . cb ( null ) ;
}
var arg ;
2014-08-15 22:18:54 +02:00
var r = foo ( arg ) ; // {}
2014-08-12 00:54:12 +02:00
// more args not allowed
2014-07-13 01:04:16 +02:00
var arg2 ;
2014-08-15 22:18:54 +02:00
var r2 = foo ( arg2 ) ; // error
2014-07-13 01:04:16 +02:00
var arg3 ;
2014-08-15 22:18:54 +02:00
var r3 = foo ( arg3 ) ; // error
2014-07-13 01:04:16 +02:00
function foo2 ( arg ) {
return new arg . cb ( null , null ) ;
}
2014-08-12 00:54:12 +02:00
// fewer args ok
2014-08-15 22:18:54 +02:00
var r4 = foo ( arg ) ; // {}
2014-07-13 01:04:16 +02:00
var arg4 ;
2014-08-15 22:18:54 +02:00
var r6 = foo ( arg4 ) ; // string
2014-07-13 01:04:16 +02:00
var arg5 ;
2014-08-15 22:18:54 +02:00
var r7 = foo ( arg5 ) ; // string