2014-07-13 01:04:16 +02:00
|
|
|
//// [genericSpecializations1.ts]
|
|
|
|
interface IFoo<T> {
|
|
|
|
foo<T>(x: T): T; // no error on implementors because IFoo's T is different from foo's T
|
|
|
|
}
|
|
|
|
|
|
|
|
class IntFooBad implements IFoo<number> {
|
|
|
|
foo(x: string): string { return null; }
|
|
|
|
}
|
|
|
|
|
|
|
|
class StringFoo2 implements IFoo<string> {
|
|
|
|
foo(x: string): string { return null; }
|
|
|
|
}
|
|
|
|
|
|
|
|
class StringFoo3 implements IFoo<string> {
|
|
|
|
foo<T>(x: T): T { return null; }
|
|
|
|
}
|
|
|
|
|
|
|
|
//// [genericSpecializations1.js]
|
|
|
|
var IntFooBad = (function () {
|
|
|
|
function IntFooBad() {
|
|
|
|
}
|
2015-02-07 05:03:24 +01:00
|
|
|
IntFooBad.prototype.foo = function (x) { return null; };
|
2014-07-13 01:04:16 +02:00
|
|
|
return IntFooBad;
|
|
|
|
})();
|
|
|
|
var StringFoo2 = (function () {
|
|
|
|
function StringFoo2() {
|
|
|
|
}
|
2015-02-07 05:03:24 +01:00
|
|
|
StringFoo2.prototype.foo = function (x) { return null; };
|
2014-07-13 01:04:16 +02:00
|
|
|
return StringFoo2;
|
|
|
|
})();
|
|
|
|
var StringFoo3 = (function () {
|
|
|
|
function StringFoo3() {
|
|
|
|
}
|
2015-02-07 05:03:24 +01:00
|
|
|
StringFoo3.prototype.foo = function (x) { return null; };
|
2014-07-13 01:04:16 +02:00
|
|
|
return StringFoo3;
|
|
|
|
})();
|