Angular 角度模型我应该将属性设置为私有和构造函数吗?

Angular 角度模型我应该将属性设置为私有和构造函数吗?,angular,Angular,我知道,通常最好的做法是将属性设置为私有,并设置getter和setter,但我在在线教程中看到,模型是这样做的: export class UserModel{ name: string, } export class UserModel{ private name: string; constructor(name){ this.name = name} getName(){ return this.name} setName(name) { this.nam

我知道,通常最好的做法是将属性设置为私有,并设置getter和setter,但我在在线教程中看到,模型是这样做的:

export class UserModel{
   name: string,
}
export class UserModel{
   private name: string;
   constructor(name){ this.name = name}
   getName(){ return this.name}
   setName(name) { this.name = name}
我应该这样做吗:

export class UserModel{
   name: string,
}
export class UserModel{
   private name: string;
   constructor(name){ this.name = name}
   getName(){ return this.name}
   setName(name) { this.name = name}

对于Angular,这是一个更好的实践,请注意,当我使用第一个时,与服务等一起使用时,它会更容易。

而不是使用访问器

请看下面


我通常定义一个接口,而不是只包含以下属性的类:

export interface UserModel{
   name: string;
}
如果我需要getter/setter中的一些逻辑,或者如果值来自其他地方(例如服务),并且我希望确保始终具有最新的值,那么我只使用getter/setter

这里我想确保绑定的
searchTerm
在服务中得到更新。如果另一个组件更新了该服务,我总是从该服务获取当前值

  get searchTerm(): string {
    return this.dataService.serviceData;
  }

  set searchTerm(value: string) {
    this.dataService.serviceData = value;
  }

正当因此,最好将它们私有化。我们必须遵循Typescript语法,因为它易于使用并从ide生成,而且它包含保护它的实际变量。getter/setter的典型用例是您有额外的逻辑,例如,
get name(){返回this.firstName+this.lastName;}
或审核此类操作以记录系统。否则,公共访问器就可以了。谢谢您的回答!我现在知道接口用于定义对象的形状,而类用于创建多个实例或单实例。然而,假设我和我的朋友们仍然不太适应使用界面,我们的项目已经完成了一半。因此,我们使用类,因此作为第二个最佳解决方案,我应该将类属性设置为私有还是公共,因为我只想定义该对象的形状。这取决于您对状态变化的关注程度,尤其是当团队太新以至于接口不适时,如果需要的话,我会使用公共属性并定义适当的setter/getter(使用TypeScript语法,而不是函数)。