2014-07-13 01:04:16 +02:00
|
|
|
//// [typeParameterAsTypeParameterConstraint2.ts]
|
|
|
|
// using a type parameter as a constraint for a type parameter is invalid
|
|
|
|
// these should be errors unless otherwise noted
|
|
|
|
|
|
|
|
function foo<T, U extends T>(x: T, y: U): U { return y; } // this is now an error
|
|
|
|
|
|
|
|
foo(1, '');
|
|
|
|
foo(1, {});
|
|
|
|
|
|
|
|
interface NumberVariant extends Number {
|
|
|
|
x: number;
|
|
|
|
}
|
|
|
|
var n: NumberVariant;
|
|
|
|
var r3 = foo(1, n);
|
|
|
|
|
|
|
|
function foo2<T, U extends { length: T }>(x: T, y: U) { return y; } // this is now an error
|
|
|
|
foo2(1, { length: '' });
|
|
|
|
foo2(1, { length: {} });
|
|
|
|
foo2([], ['']);
|
|
|
|
|
|
|
|
//// [typeParameterAsTypeParameterConstraint2.js]
|
2014-08-14 15:21:30 +02:00
|
|
|
// using a type parameter as a constraint for a type parameter is invalid
|
|
|
|
// these should be errors unless otherwise noted
|
2015-02-07 05:03:24 +01:00
|
|
|
function foo(x, y) { return y; } // this is now an error
|
2014-07-13 01:04:16 +02:00
|
|
|
foo(1, '');
|
|
|
|
foo(1, {});
|
|
|
|
var n;
|
|
|
|
var r3 = foo(1, n);
|
2015-02-07 05:03:24 +01:00
|
|
|
function foo2(x, y) { return y; } // this is now an error
|
2014-07-13 01:04:16 +02:00
|
|
|
foo2(1, { length: '' });
|
|
|
|
foo2(1, { length: {} });
|
|
|
|
foo2([], ['']);
|