我了解 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/