typescript - Typescript 中是否需要访问器?

标签 typescript oop encapsulation accessor

我了解 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;
}

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

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

关于typescript - Typescript 中是否需要访问器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51049471/

相关文章:

c# - 访问实例变量时使用关键字this是不是效率更高?

Python - 多进程,类的成员函数

django - 如何将内联添加到另一个应用程序的 ModelAdmin,而不产生循环依赖?

javascript - 原型(prototype)方法未被调用

java - Java类错误

javascript - 变量不保存新值

typescript - 如何在 Deno 中提取类型

javascript - 将任何数字与 null 相乘应该在 typescript 中返回 null 而不是 0

typescript - 如何避免 TypeScript 模板文字类型推断中的歧义?

Angular 6 - 将数据传递到类变量时变得不确定