2014-07-13 01:04:16 +02:00
|
|
|
//// [constraintSatisfactionWithEmptyObject.ts]
|
|
|
|
// valid uses of a basic object constraint, no errors expected
|
|
|
|
|
|
|
|
// Object constraint
|
|
|
|
function foo<T extends Object>(x: T) { }
|
|
|
|
var r = foo({});
|
|
|
|
var a = {};
|
|
|
|
var r = foo({});
|
|
|
|
|
|
|
|
class C<T extends Object> {
|
|
|
|
constructor(public x: T) { }
|
|
|
|
}
|
|
|
|
|
|
|
|
var r2 = new C({});
|
|
|
|
|
|
|
|
interface I<T extends Object> {
|
|
|
|
x: T;
|
|
|
|
}
|
|
|
|
var i: I<{}>;
|
|
|
|
|
|
|
|
// {} constraint
|
|
|
|
function foo2<T extends {}>(x: T) { }
|
|
|
|
var r = foo2({});
|
|
|
|
var a = {};
|
|
|
|
var r = foo2({});
|
|
|
|
|
|
|
|
class C2<T extends {}> {
|
|
|
|
constructor(public x: T) { }
|
|
|
|
}
|
|
|
|
|
|
|
|
var r2 = new C2({});
|
|
|
|
|
|
|
|
interface I2<T extends {}> {
|
|
|
|
x: T;
|
|
|
|
}
|
|
|
|
var i2: I2<{}>;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//// [constraintSatisfactionWithEmptyObject.js]
|
2014-08-14 15:21:30 +02:00
|
|
|
// valid uses of a basic object constraint, no errors expected
|
|
|
|
// Object constraint
|
2014-07-13 01:04:16 +02:00
|
|
|
function foo(x) {
|
|
|
|
}
|
|
|
|
var r = foo({});
|
|
|
|
var a = {};
|
|
|
|
var r = foo({});
|
|
|
|
var C = (function () {
|
|
|
|
function C(x) {
|
|
|
|
this.x = x;
|
|
|
|
}
|
|
|
|
return C;
|
|
|
|
})();
|
|
|
|
var r2 = new C({});
|
|
|
|
var i;
|
2014-08-14 15:21:30 +02:00
|
|
|
// {} constraint
|
2014-07-13 01:04:16 +02:00
|
|
|
function foo2(x) {
|
|
|
|
}
|
|
|
|
var r = foo2({});
|
|
|
|
var a = {};
|
|
|
|
var r = foo2({});
|
|
|
|
var C2 = (function () {
|
|
|
|
function C2(x) {
|
|
|
|
this.x = x;
|
|
|
|
}
|
|
|
|
return C2;
|
|
|
|
})();
|
|
|
|
var r2 = new C2({});
|
|
|
|
var i2;
|