DEPRECATED: Use --strictBindCallApply instead since TypeScript 3.2
Finally TypeScript 3.2 officially supports this feature!!!
See: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-2.html#strictbindcallapply
bind.ts
Function.prototype.bind with typings for TypeScript
Function#bind is untyped in TypeScript (in v3.0 at least, cf: #212).
It always returns any.
function foo(a: number, b: number): string {
return `${this.msg}: ${a + b}`;
}
// bar is `any`!
const bar = foo.bind({msg: 'hello'}, 10);
// ok
bar(20); // 'hello: 30'
// should be a type error, but actually allowed...
bar('anything');bind.ts is a workaround for this issue.
import bind from 'bind.ts';
// bar is `(b: number) => string`
const bar = bind(foo, {msg: 'hello'}, 10);
// ok
bar(20); // 'hello: 30'
// error!
bar('anything');Note: TypeScript v3.0 introduces generic rest parameters. It's helpful but cannot solve this issue completely and the type definition of Function#bind in TypeScript core is not changed.
Requirement
bind.ts v2 requires TypeScript v3.0+. For TypeScript v2.x, use bind.ts v1.
Limitation
The maximum number of params of bind() is 5.
License
MIT License: Teppei Sato <teppeis@gmail.com>

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
