4
私はインターフェイス持って割り当て活字体のコンストラクタのパラメータ
class Person implements IFieldValue{
name: string;
value: string;
constructor (name: string, value: string) {
this.name = name;
this.value = value;
}
}
私はリファクタリングを考えてきましたthis postを読んだ後:
class Person implements IFieldValue{
constructor(public name: string, public value: string) {
}
}
質問:ファーストクラスでは、デフォルトではのようなフィールドがあります。 2番目のサンプルでは、私はpublic
としか設定できません。 TypeScriptの既定のアクセス修飾子がすべて正しいのか理解していますか?
'Person'が' name 'と' value 'のパブリックプロパティを持つ 'IFieldValue'を実装している場合、' name'と 'value'は' Person'クラスの 'public'のままでなければなりません。入力した2つのコード例は、TypeScript 2.xでコンパイルされません。インターフェースを変更して、プロップをプライベートにするか、private props 'personName'と' personValue'を持つことができます: 'class Person implements IFieldValue { private personName:string; private personValue:string; コンストラクタ(パブリック名:文字列、パブリック値:文字列){ this.personName = name; this.personValue = value; } } –
申し訳ありませんが、私が言った部分は無視してください:*「インターフェースを変更して、小道具を非公開にする」*小道具はインターフェース上でしか公開されていないので意味がありません –