Typescript 中是否需要访问器?

Are accessors necessary in Typescript?

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

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

例如我可以:

class foo {

  name: string;

}

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

class foo {

  private _name: string;

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

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

}

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

在此上下文中访问器的目的是什么?

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

interface foo {
    name: string;
}

这个接口究竟是如何实现的并不重要。它可以是带有 getter 和 setter 的 class,带有 public 属性 的 class,甚至是普通对象。

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