我正在尝试将 Mootools 与 TypeScript 一起使用。Mootools 和一些现代浏览器支持 .bind 方法,它是多态的。
如何在 *.d.ts 文件中正确声明此功能,以便能够使用 [1,2].map(this.foo.bind(this)); 之类的构造 ?
我知道我可以通过使用 lambdas 来避免这种结构,但有时我不想这样做。
也许有一个 mootools.d.ts 文件我可以下载而不是自己重新发明它?
我正在尝试将 Mootools 与 TypeScript 一起使用。Mootools 和一些现代浏览器支持 .bind 方法,它是多态的。
如何在 *.d.ts 文件中正确声明此功能,以便能够使用 [1,2].map(this.foo.bind(this)); 之类的构造 ?
我知道我可以通过使用 lambdas 来避免这种结构,但有时我不想这样做。
也许有一个 mootools.d.ts 文件我可以下载而不是自己重新发明它?
TypeScript 的 lib.d.ts 已经在 Function 接口中定义了绑定函数的签名,如下所示:
bind(thisArg: any, ...argArray: any[]): Function;
在泛型被添加到语言中之前,我认为没有更好的方法可以做到这一点。
不过目前,如果您想使用 bind 并且结果函数的接收者需要一个特定的签名,您将不得不将函数转换回该签名:
var bfn : (p: number) => string;
bfn = <(p: number) => string> fn.bind(ctx);