TypeScriptの変数private
とprotected
の違いは何ですか? C#
についても同様の質問がありますが、2つの言語の概念が同一であるかどうかはわかりません。もしそうでなければ、違いを知ることは有益でしょう。TypeScript - プライベート変数とプロテクト変数の違い
6
A
答えて
3
protected
は、C#と非常によく似たTypeScriptで動作します。 TypeScript release notesのような、それを文書化:だけすることができます
The new protected modifier in classes works like it does in familiar languages like C++, C#, and Java. A protected member of a class is visible only inside subclasses of the class in which it is declared
private
のに対し、あなたはすぐにクラス型へのアクセス権を持っています。プライベートメンバーはサブクラスには表示されません。
15
他のOO言語と同じです。
プライベートメソッド/メンバーには、クラス内部からのみアクセスできます。
保護されたメソッド/メンバーには、クラスと拡張クラスの内部からアクセスできます。
class A {
private x: number;
protected y: number;
constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
getX(): number {
return this.x;
}
getY(): number {
return this.y;
}
}
class B extends A {
multiply(): number {
return this.x * this.y;
}
}
クラスA
の両方で(プライベート)this.x
と(保護)this.y
へのアクセスがあることに注意してください。
しかし、クラスB
にthis.y
とthis.x
への唯一のアクセスがあります。このエラーがあります:
Property 'x' is private and only accessible within class A
(あなたがplaygroundでエラーを見ることができます)
どうかの理解することが重要ですが、これは活字体しか真実であるということです。
JavaScriptでこれらのメンバーには、インスタンスへの参照を持つすべての人がアクセスできます。
関連する問題
- 1. 変数のアクセス修飾子:プライベート対プロテクト
- 2. パブリック、プライベート、プロテクトとの相違
- 3. パブリック静的変数とプライベート静的変数の違い
- 4. プロテクト/パブリック変数F#のクロージャー
- 5. バックボーンビューへのプライベート変数とパブリック変数
- 6. OOPでプライベートとプロテクトの違いは何ですか?
- 7. Typescriptのプライベート関数
- 8. javascriptのプロトタイプとプライベート変数
- 9. プライベート変数が
- 10. ローカル変数とグローバル変数の違い
- 11. 継承とプライベート変数C++
- 12. プライベートvsパブリック変数
- 13. プロパティと変数の違い
- 14. プライベート関数をオーバーライドすると、プロテクトとどのように違うのですか?
- 15. javascriptのオブジェクト変数とプライベート変数にメソッドを適用する
- 16. パブリック変数とプライベート変数の命名規則
- 17. .net 4.0タスクのプライベート変数
- 18. スレッド内のプライベート変数
- 19. Ember-data DS.Modelのプライベート変数
- 20. 未定義のプライベート変数
- 21. SQLAlchemy、プライベート変数のフィールド
- 22. プライベート変数へのアクセス
- 23. OpenMPプライベート変数の場所?
- 24. TypeScriptリネーム変数
- 25. Typescriptグローバル変数
- 26. プライベート変数と親オブジェクトへのアクセス
- 27. プライベート変数とクラスのローカル参照は
- 28. Node.jsグローバル変数とTypeScript
- 29. C++プライベート変数スコープ規則
- 30. Cプライベート変数GetとSetメソッド
@JoeClayこれはC#用です。 TypeScriptの答えはほとんど "正解"ですが、そこにはTypeScriptにはないアクセス修飾子も書かれています。 – vcsjones
@vcsjones:それは公正な点です。答えのC#固有の部分がそれらを混乱させる可能性があります。フラグを削除します。 –