1. ホーム
  2. javascript

[解決済み] TypeScriptのプライベートメンバーにはアクセスできないはずなのに、なぜアクセスできるのですか?

2022-10-13 19:38:21

質問

TypeScriptのプライベートメンバの実装を見ていて、少し混乱することがあります。Intellisenseではプライベートメンバにアクセスできませんが、純粋なJavaScriptではすべてそこにあるのです。このことから、TSはプライベートメンバを正しく実装していないのではと思います。 何か考えはありますか?

class Test{
  private member: any = "private member";
}
alert(new Test().member);

どのように解決するのですか?

型チェックと同様、メンバのプライバシーはコンパイラ内でのみ実施されます。

プライベートプロパティは通常のプロパティとして実装され、クラス外のコードはアクセスすることができません。

クラス内部で何かを本当にプライベートなものにするには、クラスのメンバーであってはならず、オブジェクトを作成するコード内の関数スコープ内で作成されるローカル変数になります。つまり、クラスのメンバのようにアクセスすることはできません。 this キーワードを使用してアクセスすることはできません。