打字稿,范围界定 - 远离匿名函数

时间:2016-10-04 17:04:41

标签: javascript typescript scope

我似乎在打字稿类上遇到了范围问题,我试图看看我是否可以摆脱匿名函数。我一直在使用箭头方法而不是。例如 -

//blah is globally available
export class Foo {
    addSomeListeners = () => {
        blah.addListener( this.eventHandler );
    }
    eventHandler( someProperties ){
        blah.get( somePropreties, this.anotherCallback );
    } 

    anotherCallback = ( data ) => {
      //do something with the data
    }

}

所以在代码的其他地方我创建了一个Foo实例,我调用了addSomeListeners方法。这很好用。 稍后会触发一个事件并调用eventHandler方法 - 一切都还不错。

现在在eventHandler方法中,它执行一些操作并调用需要回调的get方法。在这一点上,这个'这个' property为null - 所以它不知道' anotherCallback'是。

我猜它有一个简单的范围问题,但我现在似乎可以解决它。我希望能够删除所有匿名函数,所以不是在blah.get(...)签名中定义方法,而是可以从Foo类中调用一个方法来重用。

编辑 - 这个问题不重复,因为副本没有处理Typescript,它确实提到了ECMA6箭头功能,但没有解决我遇到的问题。所以是非常相似,但IMO不够相似,不能重复。

例如,我有一个Foo实例(比如foo),我调用foo.addSomeListeners()。现在用这种方法来说这个'是foo - 这是我所期待的。 然后稍后由于事件而调用了eventHandler方法 - 但是在那个'这个'一片空白。

0 个答案:

没有答案