我有界面:
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;
}
}
阅读this post之后我考虑重构:
class Person implements IFieldValue{
constructor(public name: string, public value: string) {
}
}
问题:在第一堂课中,我的字段默认为private
。在第二个示例中,我只能将它们设置为public
。这一切是正确的还是我对TypeScript中默认Access修饰符的理解?
答案 0 :(得分:16)
默认公开。 TypeScript Documentation
以下定义
if (could_be || very_improbable) {
DoSomething();
}
默认情况下,属性unlikely()
和if (could_be || unlikely(very_improbable)) {
DoSomething();
}
是公开的。
因为他们在这里
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
在我看来,这是避免冗余的最佳方式。