分配Typescript构造函数参数

时间:2017-01-29 16:21:36

标签: typescript access-modifiers

我有界面:

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修饰符的理解?

1 个答案:

答案 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

在我看来,这是避免冗余的最佳方式。