1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
//// [genericImplements.ts]
class A { a; };
class B { b; };
interface I {
f<T extends A>(): T;
} // { f: () => { a; } }
// OK
class X implements I {
f<T extends B>(): T { return undefined; }
} // { f: () => { b; } }
// OK
class Y implements I {
f<T extends A>(): T { return undefined; }
} // { f: () => { a; } }
// OK
class Z implements I {
f<T>(): T { return undefined; }
} // { f: <T>() => T }
//// [genericImplements.js]
var A = /** @class */ (function () {
function A() {
}
return A;
}());
;
var B = /** @class */ (function () {
function B() {
}
return B;
}());
;
// OK
var X = /** @class */ (function () {
function X() {
}
X.prototype.f = function () { return undefined; };
return X;
}()); // { f: () => { b; } }
// OK
var Y = /** @class */ (function () {
function Y() {
}
Y.prototype.f = function () { return undefined; };
return Y;
}()); // { f: () => { a; } }
// OK
var Z = /** @class */ (function () {
function Z() {
}
Z.prototype.f = function () { return undefined; };
return Z;
}()); // { f: <T>() => T }
|