3

タイプスクリプトを使用した「this」スコープに関する同様の質問で触れられた単純な問題を取得しました。

ローカルストレージの問題のために芝生を包むストレージサービスがあります. 現在、このコードを Typescript に移行していますが、解決できない問題が発生しました。

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

上記の例では、lawnchair はこれを実際に実行しているストアにしますが、Typescript はそれを使用しているクラスのインスタンスにします。この問題を回避する方法はありますか?

== 編集 ==

基礎となる Lawnchair メソッドおよび周囲のクラス メソッドと混同しないように、質問の例を少し更新しました。

コンパイルしようとしたときに表示されるエラーは次のとおりです。

プロパティ「all」は、タイプ「LawnchairStorageService」の値には存在しません

どちらが正しいですか、そのメソッドは含まれているクラス インスタンスには存在しません。それは、ローンチェア クロージャー スコープ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 に答える