Typescript 缺少这个定义

Typescript 缺少这个定义,typescript,Typescript,我在对象中定义了一个函数,如下所示: connect(callback?: (connected: bool) => void) { $.ajax(this.url + "/connect", $.extend(true, {}, this.ajaxSettings, { success: (data) => { this.errorChecker(data, (data) => {

我在对象中定义了一个函数,如下所示:

    connect(callback?: (connected: bool) => void) {
        $.ajax(this.url + "/connect", $.extend(true, {}, this.ajaxSettings, {
            success: (data) => {
                this.errorChecker(data, (data) => {
                    if (callback != null) {
                        callback(data);
                    }
                });
            },
            timeout: this.timeout,
            error: () => {
                if (callback != null) {
                    callback(false);
                }
            }
        }));
    }
TypeScript编译器接受该值并生成以下内容:

        VAS.prototype.connect = function (callback) {
            $.ajax(this.url + "/connect", $.extend(true, {
            }, this.ajaxSettings, {
                success: function (data) {
                    _this.errorChecker(data, function (data) {
                        if(callback != null) {
                            callback(data);
                        }
                    });
                },
                timeout: this.timeout,
                error: function () {
                    if(callback != null) {
                        callback(false);
                    }
                }
            }));
        };
请注意js中的这一行:

\u此.errorChecker(数据、函数(数据)

编译器已经正确地注意到我使用了=>运算符,并得出结论,在我的原始TypeScript中,
this
应该引用父对象,而不是实际调用成功回调时发生的任何
this
。但是,出于某种原因,编译器忘记了包含魔线:

var _this = this;
在函数的开头。这是一个bug吗?还是这是设计的?如果它完全忽略了_this/这件事,我会说我做错了,但它已经走了一半,这让我觉得有些地方错了


更新:奇怪的是,Visual Studio中的编译器似乎存在问题,如果我将相同的代码复制到系统中,它将按预期工作。

这看起来像一个bug。你应该打开一个窗口来跟踪它。

是的,我也这么认为,但我总是希望确保我没有遗漏一些明显的东西。我提交了一个bug。