3

遇到了一个简单的问题,在使用 typescript 的“this”范围的类似问题中提到了这个问题。

我有一项存储服务,可以为我当地的存储问题包裹草坪椅。现在我正在将此代码迁移到 Typescript 我遇到了一个我无法解决的问题。

public GetAll(callback: Function) {
           Lawnchair({ name: this.storeName }, function () {
                this.all(callback);
            });
        };

现在在上面的示例中,草坪椅使它成为您正在操作的实际商店,但 Typescript 将使它成为您正在使用的类的实例那么有没有办法解决这个问题?

== 编辑 ==

稍微更新了问题示例,以免与底层的草坪椅方法和周围的类方法混淆。

这是我在尝试编译时遇到的错误:

'LawnchairStorageService' 类型的值不存在属性 'all'

这是正确的,该方法不存在于包含的类实例中,它存在于草坪关闭范围this的上下文中。

4

2 回答 2

1

如上面的评论所述,它可以编译,我认为它应该运行:

public GetAll(callback: Function) {
    return function (callback){
        Lawnchair({ name: this.storeName }, function () {
            this.all(callback);
        });
    }(callback);
};

...但我怀疑其他人可能会提出更优雅的解决方案。

于 2013-03-28T16:07:34.507 回答
0

您是否尝试过以下操作:

public Exists(uniqueIdentifier: string, callback: Function) {
           var me = this;
           Lawnchair({ name: this.storeName }, function (me) {
                me.exists(uniqueIdentifier, callback);
            });
        };
于 2013-03-28T14:06:19.987 回答