私はインターフェースを持っています:
export interface IFieldValue {
name: string;
value: string;
}
そして私はそれを実装するクラスを持っています:
class Person implements IFieldValue{
name: string;
value: string;
constructor (name: string, value: string) {
this.name = name;
this.value = value;
}
}
読んだ後 この投稿 リファクタリングについて考えています:
class Person implements IFieldValue{
constructor(public name: string, public value: string) {
}
}
質問:最初のクラスには、デフォルトでprivate
となるフィールドがあります。 2番目のサンプルでは、public
としてのみ設定できます。 TypeScriptのデフォルトのAccess修飾子はすべて正しいですか、それとも私の理解ですか?
デフォルトではパブリック。 TypeScriptドキュメント
次の定義では
class Person implements IFieldValue{
name: string;
value: string;
constructor (name: string, value: string) {
this.name = name;
this.value = value;
}
}
属性<Person>.name
および<Person>.value
はデフォルトでパブリックです。
彼らがここにいるように
class Person implements IFieldValue{
constructor(public name: string, public value: string) {
this.name = name;
this.value = value;
}
}
注意:this.name
およびthis.value
はコンストラクタで定義されていないものと見なされます。
class Person implements IFieldValue{
constructor(name: string, value: string) {
this.name = name;
this.value = value;
}
}
これらの属性をプライベートにするには、次のように書き換える必要があります
class Person implements IFieldValue{
private name: string;
private value: string;
constructor (name: string, value: string) {
this.name = name;
this.value = value;
}
}
または同等に
class Person implements IFieldValue{
constructor (private name: string, private value: string) {}
}
私の意見では、これは冗長性を回避する最も好ましい方法です。