//// [typeParametersAreIdenticalToThemselves.ts] // type parameters from the same declaration are identical to themself function foo1(x: T); function foo1(x: T); // no error, different declaration for each T function foo1(x: T) { } function foo2(x: T); function foo2(x: T); // no error, different declaration for each T function foo2(x: T) { } function foo3(x: T, y: U) { function inner(x: T); function inner(x: T); // error, same T function inner(x: T) { } function inner2(x: T); function inner2(x: T); // no error, different T function inner2(x: any) { } } class C { foo1(x: T); foo1(x: T); // error, same T foo1(x: T) { } foo2(a: T, x: U); foo2(a: T, x: U); // no error, different declaration for each U foo2(a: T, x: U) { } foo3(x: T); foo3(x: T); // no error, different declaration for each T foo3(x: T) { } foo4(x: T); foo4(x: T); // no error, different declaration for each T foo4(x: T) { } } class C2 { foo1(x: T); foo1(x: T); // error, same T foo1(x: T) { } foo2(a: T, x: U); foo2(a: T, x: U); // no error, different declaration for each U foo2(a: T, x: U) { } foo3(x: T); foo3(x: T); // no error, different declaration for each T foo3(x: T) { } } interface I { foo1(x: T); foo1(x: T); // error, same T foo2(a: T, x: U); foo2(a: T, x: U); // no error, different declaration for each U foo3(x: T); foo3(x: T); // no error, different declaration for each T foo4(x: T); foo4(x: T); // no error, different declaration for each T } interface I2 { foo1(x: T); foo1(x: T); // error, same T foo2(a: T, x: U); foo2(a: T, x: U); // no error, different declaration for each U foo3(x: T); foo3(x: T); // no error, different declaration for each T } //// [typeParametersAreIdenticalToThemselves.js] // type parameters from the same declaration are identical to themself function foo1(x) { } function foo2(x) { } function foo3(x, y) { function inner(x) { } function inner2(x) { } } var C = (function () { function C() { } C.prototype.foo1 = function (x) { }; C.prototype.foo2 = function (a, x) { }; C.prototype.foo3 = function (x) { }; C.prototype.foo4 = function (x) { }; return C; })(); var C2 = (function () { function C2() { } C2.prototype.foo1 = function (x) { }; C2.prototype.foo2 = function (a, x) { }; C2.prototype.foo3 = function (x) { }; return C2; })();