48 lines
1.1 KiB
TypeScript
48 lines
1.1 KiB
TypeScript
//// [genericSpecializations2.ts]
|
|
class IFoo<T> {
|
|
foo<T>(x: T): T { // no error on implementors because IFoo's T is different from foo's T
|
|
return null;
|
|
}
|
|
}
|
|
|
|
class IntFooBad implements IFoo<number> {
|
|
foo<string>(x: string): string { return null; }
|
|
}
|
|
|
|
class StringFoo2 implements IFoo<string> {
|
|
foo<string>(x: string): string { return null; }
|
|
}
|
|
|
|
class StringFoo3 implements IFoo<string> {
|
|
foo<T>(x: T): T { return null; }
|
|
}
|
|
|
|
|
|
|
|
//// [genericSpecializations2.js]
|
|
var IFoo = (function () {
|
|
function IFoo() {
|
|
}
|
|
IFoo.prototype.foo = function (x) {
|
|
return null;
|
|
};
|
|
return IFoo;
|
|
})();
|
|
var IntFooBad = (function () {
|
|
function IntFooBad() {
|
|
}
|
|
IntFooBad.prototype.foo = function (x) { return null; };
|
|
return IntFooBad;
|
|
})();
|
|
var StringFoo2 = (function () {
|
|
function StringFoo2() {
|
|
}
|
|
StringFoo2.prototype.foo = function (x) { return null; };
|
|
return StringFoo2;
|
|
})();
|
|
var StringFoo3 = (function () {
|
|
function StringFoo3() {
|
|
}
|
|
StringFoo3.prototype.foo = function (x) { return null; };
|
|
return StringFoo3;
|
|
})();
|