【问题标题】:Are accessors necessary in Typescript?Typescript 中是否需要访问器?
【发布时间】:2018-06-26 18:35:59
【问题描述】:

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

}

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

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

【问题讨论】:

  • 这样的访问器没有任何目的。如果他们做的不是简单的公共字段所做的事情(例如,在调用 setter 时计算其他属性),他们就会有。

标签: typescript oop encapsulation accessor


【解决方案1】:

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

interface foo {
    name: string;
}

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多