2017-09-01 9 views
2

タイプAのオブジェクトのインスタンスを取得します。これをTypescriptのゲッター関数でどのように拡張できますか?getcriptを使ってtypescriptクラスを拡張するには?

interface A { 
    testFunction(): SomeType|null; 
} 

しかし、どのように私はgetter関数として表示されるようにしたい場合は、それを追加することになっていますし、私のようなindex.d.tsファイルタイプを拡張し、私は

A.prototype.testFunction = function() { 
    if(this.something) { 
    return this.something; 
    } 
return null; 
} 

を行う機能を追加機能としてだけでなく、

私はObject.defineProperty()を見ているが、活字体自体は、次のコードでthisの間違ったインスタンスを参照する、1つの作業あまりにも幸せではないようです試してみました:

Object.defineProperty(A.prototype, "testGet", { 
    get: function() { 
     if(this.something) { // <== this appears to not refer to type A 
      return this.something; 
     } 
     return null; 
    }, 
    enumerable: false, 
    configurable: true 
}); 
+0

'function()'宣言は 'this'コンテキストを取得しませんが、矢印関数' => 'はそれを取得します。 – JBC

答えて

3

ゲッター/セッターを宣言することができます

interface A { 
    testGet: SomeType|null; 
} 

とgetter関数内type of this parameterを指定します:

0単にインターフェイスでプロパティとして
+0

[OK]をクリックしますが、 'this'かオブジェクトを参照するにはどうすればいいですか?' test' = '{do stuffs}' '[docsを見る](https://www.typescriptlang.org/docs/handbook/functions.html)問題のdefineProperty?それは暗黙的に 'any'型を持っていると言います(私はこれをtsconfigで許可していません)。 – Sheph

+0

getterのパラメータとして 'this'の型を指定することができます。これは編集中に消去されます。 – Saravana

関連する問題