TypeScript传递变量

时间:2014-01-23 17:55:46

标签: typescript

我是打字稿的新手 - 有变量和范围的问题。

我有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太混合了) - 任何想法?

1 个答案:

答案 0 :(得分:2)

在TypeScript中,您可以这样做:

public test1() {
    $("#test").click(() => {
        this.test2("blah");
    });
}

请注意() => {}语法。为了让您了解这是做什么的,请查看已编译的JavaScript:

YourClass.prototype.test1 = function () {
    var _this = this;

    $("#test").click(function () {
        _this.test2("blah");
    });
};