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

このオブジェクトのタイプについては、矢印関数が定義されているコンテキストに依存します。これのタイプは、周囲のコンテキストのタイプに基づいて推測されます。

非同期関数に関しては、このキーワードの動作はもう少し複雑になる可能性があります。非同期関数では、この値は関数の呼び出に応じて変化する場合があります。この値が一貫していることを確認するために、非同期関数内の矢印関数を使用して、周囲のコンテキストからこの値を継承します。

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

クラスmyclass {
  名前：文字列;

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

  async greet（）{
    setimeout（（）=> {
      console.log（ `こんにちは、私の名前は$ {this.name}`）;
    }、1000）;
  }
}

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


このコードでは、SettimeOutコール内の矢印関数は、周囲のオブジェクトOBJからこの値を継承します。