如何在函数中定义lambda函数?

如何在函数中定义lambda函数?,lambda,typescript,Lambda,Typescript,我有一个问题,我不能在我的函数中创建lambda函数。我有以下资料: start(){ var idleTime = 0; var idleInterval = this.$interval(timerIncrement, 1000); $(document).on('mousemove keypress', function (e) { idleTime = 0; }); functio

我有一个问题,我不能在我的函数中创建lambda函数。我有以下资料:

start(){
        var idleTime = 0;
        var idleInterval = this.$interval(timerIncrement, 1000);

        $(document).on('mousemove keypress', function (e) {
            idleTime = 0;
        });

        function timerIncrement(){
                idleTime = idleTime + 1;
                if (idleTime > 2) {
                    this.$interval.cancel(idleInterval);
                    this.Service.logout();
                }
        }
}
我希望函数
timerIncrement
具有相同的作用域,以便它可以在
idleTime
大于某个值时取消间隔。现在,我无法从函数
timerIncrement
中访问
$interval
。有什么想法吗

到目前为止,我已经尝试过:

      function timerIncrement(){
            return ()=> {
                idleTime = idleTime + 1;
                if (idleTime > 2) {
                    this.$interval.cancel(idleInterval);
                    this.Service.logout();
                }
            }
        }

然而,return中的函数从未被调用。

好吧,这并不难——我只需要将函数定义为变量

        var timerIncrement:Function = () => {
            idleTime = idleTime + 1;
            if (idleTime > 2) {
                this.$interval.cancel(idleInterval);
                this.Service.logout();
            }
        };

而且范围是正确的。

为了完整起见,您还可以进行以下更改:

var idleInterval = this.$interval(timerIncrement.bind(this), 1000);
我不推荐它用于您的用例,但有时它可能会派上用场