次のコードブロックは、活字体で合法ではなく、流れで:TypeScriptがオブジェクトの型/ thisを推論する方法はありますか?
var o = {
x: 1,
foo() { this.x = 'a'; }
};
o.foo();
私はオブジェクトのインターフェイスを作成する場合、それは失敗することができます:
interface Obj {
x: number;
foo(this: Obj): void;
}
var o = {
x: 1,
foo(this: Obj) { this.x = 'a'; }
};
o.foo();
は、活字体のコンパイルオプションがありますそれは流れのように動作させるために? (つまり、インターフェイスは必要ありません)
どのように「this」という名前のパラメータを持つことができますか? – cartant
これはTypeScriptが 'this'のタイプをチェックする唯一の方法です。 https://www.typescriptlang.org/docs/handbook/functions.htmlを参照して、「this parameters」を検索してください。 – Manuel
私はこれを期待していません。外側のタイプは、その関数のコンテキストでは完全に定義されていません。しかし、必ずしもインターフェースを定義する必要はありません。通常のオブジェクト型リテラルを使用してプロパティを追加するだけでよいでしょう。 –