let f00 = foo.bind(undefined); let f01 = foo.bind(undefined, 10); let f02 = foo.bind(undefined, 10, "hello"); let f03 = foo.bind(undefined, 10, 20); // Error let f04 = overloaded.bind(undefined); // typeof overloaded let f05 = generic.bind(undefined); // typeof generic let c00 = foo.call(undefined, 10, "hello"); let c01 = foo.call(undefined, 10); // Error let c02 = foo.call(undefined, 10, 20); // Error let c03 = foo.call(undefined, 10, "hello", 30); // Error let a00 = foo.apply(undefined, [ 10, "hello" ]); let a01 = foo.apply(undefined, [ 10 ]); // Error let a02 = foo.apply(undefined, [ 10, 20 ]); // Error let a03 = foo.apply(undefined, [ 10, "hello", 30 ]); // Error class C { foo(a, b) { return ""; } overloaded(x) { return undefined; } generic(x1) { return x1; } constructor(a1, b1){ } } let f10 = c.foo.bind(c); let f11 = c.foo.bind(c, 10); let f12 = c.foo.bind(c, 10, "hello"); let f13 = c.foo.bind(c, 10, 20); // Error let f14 = c.foo.bind(undefined); // Error let f15 = c.overloaded.bind(c); // typeof C.prototype.overloaded let f16 = c.generic.bind(c); // typeof C.prototype.generic let c10 = c.foo.call(c, 10, "hello"); let c11 = c.foo.call(c, 10); // Error let c12 = c.foo.call(c, 10, 20); // Error let c13 = c.foo.call(c, 10, "hello", 30); // Error let c14 = c.foo.call(undefined, 10, "hello"); // Error let a10 = c.foo.apply(c, [ 10, "hello" ]); let a11 = c.foo.apply(c, [ 10 ]); // Error let a12 = c.foo.apply(c, [ 10, 20 ]); // Error let a13 = c.foo.apply(c, [ 10, "hello", 30 ]); // Error let a14 = c.foo.apply(undefined, [ 10, "hello" ]); // Error let f20 = C.bind(undefined); let f21 = C.bind(undefined, 10); let f22 = C.bind(undefined, 10, "hello"); let f23 = C.bind(undefined, 10, 20); // Error C.call(c, 10, "hello"); C.call(c, 10); // Error C.call(c, 10, 20); // Error C.call(c, 10, "hello", 30); // Error C.apply(c, [ 10, "hello" ]); C.apply(c, [ 10 ]); // Error C.apply(c, [ 10, 20 ]); // Error C.apply(c, [ 10, "hello", 30 ]); // Error