//// [declFilePrivateMethodOverloads.ts] interface IContext { someMethod(); } class c1 { private _forEachBindingContext(bindingContext: IContext, fn: (bindingContext: IContext) => void); private _forEachBindingContext(bindingContextArray: Array, fn: (bindingContext: IContext) => void); private _forEachBindingContext(context, fn: (bindingContext: IContext) => void): void { // Function here } private overloadWithArityDifference(bindingContext: IContext); private overloadWithArityDifference(bindingContextArray: Array, fn: (bindingContext: IContext) => void); private overloadWithArityDifference(context): void { // Function here } } declare class c2 { private overload1(context, fn); private overload2(context); private overload2(context, fn); } //// [declFilePrivateMethodOverloads.js] var c1 = (function () { function c1() { } c1.prototype._forEachBindingContext = function (context, fn) { // Function here }; c1.prototype.overloadWithArityDifference = function (context) { // Function here }; return c1; })(); //// [declFilePrivateMethodOverloads.d.ts] interface IContext { someMethod(): any; } declare class c1 { private _forEachBindingContext(bindingContext, fn); private _forEachBindingContext(bindingContextArray, fn); private overloadWithArityDifference(bindingContext); private overloadWithArityDifference(bindingContextArray, fn); } declare class c2 { private overload1(context, fn); private overload2(context); private overload2(context, fn); }