首页 > 解决方案 > Typescript 中是否需要访问器?

问题描述

我了解封装在 OOP 中的重要性,并且访问器(getter/setter)提供了这种抽象级别。

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

例如我可以有:

class foo {

  name: string;

}

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

class foo {

  private _name: string;

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

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

}

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

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

标签: typescriptoopencapsulationaccessor

解决方案


访问器是一个实现细节。如果您遵循“程序到界面,而不是实现”的规则,用户foo应该只看到

interface foo {
    name: string;
}

这个接口是如何实现的并不重要。它可以是一个具有 getter 和 setter 的类,一个具有公共属性的类,甚至是一个普通的对象。

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


推荐阅读