代わりにTypeScriptコードを使用している場合、動作は変わりますか？「This」オブジェクトはどのタイプですか？さらに、私たちが非同期関数にあるとき、「このオブジェクトはどのように動作しますか？
TypeScriptの「この」キーワードの動作は、JavaScriptと同じです。「この」オブジェクトは、矢印関数がどのように呼ばれるかではなく、矢印関数が作成されたコンテキストによって決定されます。

TypeScriptでは、「この」オブジェクトのタイプは、矢印関数が作成されたコンテキストに依存します。たとえば、矢印関数がクラス内で定義されている場合、「この」オブジェクトにはクラスインスタンスのタイプがあります。

非同期関数については、非同期関数内の「この」オブジェクトは、関数が作成されたコンテキストによって依然として決定されます。非同期関数が矢印関数である場合、周囲のコンテキストから「この」値を継承します。

たとえば、次のコードを検討してください。

クラスの例{
名前：文字列;

コンストラクター（名前：文字列）{
this.name = name;
}

async greet（）{
新しい約束を待っています（Resolve => {
setimeout（（）=> {
console.log（こんにちは、私の名前は$ {this.name}です）;
解決（）;
}、1000）;
}）;
}
}

const example = new Example（ 'John'）;
example.greet（）;//「こんにちは、私の名前はジョンです」

このコードでは、SettimeOutコール内の矢印関数は、周囲のコンテキストから「この」値を継承します。これは、サンプルクラスのインスタンスです。挨拶方法の非同期性は、矢印関数内の「この」値に影響しません。