我是打字稿的新手 - 有变量和范围的问题。
我有2个公共方法,一个需要一个字符串。 第一个方法从jQuery单击函数中调用第二个方法(这意味着我不能再使用this.methodName)。我尝试用逻辑方法修复范围,但TS抱怨:
提供的参数与呼叫目标的任何签名都不匹配。 无法为'call'表达式选择重载。
public test1() {
//fix scope
var scopeFix = () => this.test2;
$("#test").click(function () {
//this.test2("blah");
//^^^ This doesn't work because "this." is used by jquery
scopeFix("blah");
});
}
public test2(testString:string) {
alert(testString);
}
我确定这是愚蠢的事情(比如我把JS和TS太混合了) - 任何想法?
答案 0 :(得分:2)
在TypeScript中,您可以这样做:
public test1() {
$("#test").click(() => {
this.test2("blah");
});
}
请注意() => {}
语法。为了让您了解这是做什么的,请查看已编译的JavaScript:
YourClass.prototype.test1 = function () {
var _this = this;
$("#test").click(function () {
_this.test2("blah");
});
};