diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts
index ab484e1812e7b..b90a2636be774 100644
--- a/src/lib/es5.d.ts
+++ b/src/lib/es5.d.ts
@@ -260,14 +260,14 @@ interface Function {
* @param thisArg The object to be used as the this object.
* @param argArray A set of arguments to be passed to the function.
*/
- apply(this: Function, thisArg: any, argArray?: any): any;
+ apply(this: (...args: A) => R, thisArg: any, argArray?: A): R;
/**
* Calls a method of an object, substituting another object for the current object.
* @param thisArg The object to be used as the current object.
* @param argArray A list of arguments to be passed to the method.
*/
- call(this: Function, thisArg: any, ...argArray: any[]): any;
+ call(this: (...args: A) => R, thisArg: any, ...argArray: A): R;
/**
* For a given function, creates a bound function that has the same body as the original function.
@@ -275,7 +275,7 @@ interface Function {
* @param thisArg An object to which the this keyword can refer inside the new function.
* @param argArray A list of arguments to be passed to the new function.
*/
- bind(this: Function, thisArg: any, ...argArray: any[]): any;
+ bind(this: (...args: A) => R, thisArg: any, ...argArray: A): (...args: A) => R;
/** Returns a string representation of a function. */
toString(): string;