//// [functionOverloadErrors.ts] //Function overload signature with initializer function fn1(x = 3); function fn1() { } //Multiple function overload signatures that are identical function fn2a(); function fn2a(); function fn2a() { } function fn2b(n: number[]); function fn2b(n: Array); function fn2b() { } //Multiple function overload signatures that differ only by return type function fn3(x: string): string; function fn3(y: string): number; function fn3(): any { return null; } //Function overload with rest param and another with only an optional parameter function fn6(...t: any[]); function fn6(x?: any); function fn6() { } //Function overload with rest param and another with only optional parameters function fn7(...t: any[]); function fn7(x?: any, y?: any, z?: any); function fn7() { } //Function overloads that differ only by type parameter name function fn8(n: string); function fn8(n: string); function fn8() { } //Function overloads that differ only by type parameter name when used in parameter type annotations function fn9(n: T); function fn9(n: S); function fn9() { } //Function overloads that differ only by type parameter constraints function fn10(); function fn10(); function fn10() { } // (actually OK) //Function overloads that differ only by type parameter constraints where constraints are structually identical function fn11(); function fn11(); function fn11() { } //Function overloads that differ only by type parameter constraints where constraints include infinitely recursive type reference interface List { parents: List>; } function fn12>>(); function fn12>(); function fn12() { } //Function overloads that differ by accessibility class cls { public f(); private f(s: string); f() { } private g(s: string); public g(); g() { } } //Function overloads with differing export module M { export function fn1(); function fn1(n: string); function fn1() { } function fn2(n: string); export function fn2(); export function fn2() { } } //Function overloads with differing ambience declare function dfn1(); function dfn1(s: string); function dfn1() { } function dfn2(); declare function dfn2(s: string); function dfn2() { } //Function overloads with fewer params than implementation signature function fewerParams(); function fewerParams(n: string) { } //Function implementation whose parameter types are not assignable to all corresponding overload signature parameters function fn13(n: string); function fn13(n: number) { } //Function overloads where return types are not all subtype of implementation return type function fn14(n: string): string; function fn14() { return 3; } //Function overloads where return types are different infinitely recursive type reference function fn15>>(): T; function fn15>(): T; function fn15() { return undefined; } //Function overloads which use initializer expressions function initExpr(n = 13); function initExpr() { } //// [functionOverloadErrors.js] function fn1() { } function fn2a() { } function fn2b() { } function fn3() { return null; } function fn6() { } function fn7() { } function fn8() { } function fn9() { } function fn10() { } function fn11() { } function fn12() { } //Function overloads that differ by accessibility var cls = (function () { function cls() { } cls.prototype.f = function () { }; cls.prototype.g = function () { }; return cls; })(); //Function overloads with differing export var M; (function (M) { function fn1() { } function fn2() { } M.fn2 = fn2; })(M || (M = {})); function dfn1() { } function dfn2() { } function fewerParams(n) { } function fn13(n) { } function fn14() { return 3; } function fn15() { return undefined; } function initExpr() { }