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

このオブジェクトのタイプに関しては、矢印関数が作成されるコンテキストに依存します。場合によっては、このオブジェクトは任意のタイプである場合がありますが、他のオブジェクトでは、特定のプロパティを持つオブジェクトなど、より具体的なタイプがある場合があります。正確なタイプは、矢印関数が使用されるコードによって異なります。

非同期関数については、このキーワードの動作は、関数が呼び出されるコンテキストによって引き続き影響を受ける可能性があります。たとえば、次のコードを検討してください。

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

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

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

const example = new Example（ "John"）;
example.greet（）;

このコードでは、SettimeOutコール内の矢印関数は、非同期関数内にある場合でも、周囲のクラスの例からこの値を継承します。このキーワードの動作は、関数が非同期ではない場合と同じままです。