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,甚至是普通对象。
哪个最好取决于特定实现必须遵守的约束。在大多数情况下,访问器似乎不是必需的,但有时会很方便。
我了解封装在 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,甚至是普通对象。
哪个最好取决于特定实现必须遵守的约束。在大多数情况下,访问器似乎不是必需的,但有时会很方便。