意外的打字稿这是未定义的类型

时间:2015-02-08 19:37:01

标签: typescript

    /// <reference path="../typings/signalr/signalr.d.ts" />
/// <reference path="../typings/jquery/jquery.d.ts" />

interface IMyBlackjack {

}

module My {
    export class MyBlackjack implements IMyBlackjack {

        private hub: HubProxy;
        private cnn: HubConnection;

        constructor() {
            $("#formBlackJack").hide();

            this.cnn = $.hubConnection();
            this.hub = this.cnn.createHubProxy("blackjackHub");
            this.cnn.start(() => this.onConnStart);
        }

        private onConnStart(): void {
            $("#formBlackJack").show();
            this.hub.invoke('hello');
        }
    }
}

var myBlackjack: IMyBlackjack = new My.MyBlackjack();

代码中存在问题:

this.hub.invoke('hello');

this.hub令人惊讶地未定义。

我希望它应该成为一个对象。 有什么想法吗?

1 个答案:

答案 0 :(得分:11)

this未指向该实例。修复使用lambda:

    private onConnStart = () => {
        $("#formBlackJack").show();
        this.hub.invoke('hello');
    }

更多:https://www.youtube.com/watch?v=tvocUcbCupA

this.cnn.start(() => this.onConnStart);

也许你的意思是call,即() => this.onConnStart()