Typescript是否需要访问器?

时间:2018-06-26 18:35:59

标签: typescript oop encapsulation accessor

我了解OOP中封装的重要性,而访问器(获取器/设置器)提供了这种抽象级别。

但是,使用Typescript,我可以在以后用访问者替换我的属性,并使用相同的名称,然后将我的属性重命名为带下划线的前缀(因此不会造成重大更改)。

例如,我可以拥有:

class foo {

  name: string;

}

稍后,如果我希望向该属性添加访问器,则可以更改为以下内容:

class foo {

  private _name: string;

  get name():boolean {
    return this._name;
  }

  set name(name: string) {
    this._name = name;
  }

}

这被认为是不好的做法吗?

在这种情况下访问器的目的是什么?

1 个答案:

答案 0 :(得分:4)

访问器是实现的详细信息。如果您遵循“ program to the interface, not to the implementaion”规则,则foo的用户只能看到

interface foo {
    name: string;
}

该接口的实现方式无关紧要。可能是带有getter和setter的类,带有公共属性的类,甚至是纯对象。

哪个最佳,取决于特定实现必须遵守的约束。在大多数情况下,访问器似乎不是必需的,但有时可能很方便。