是否有效/可能为在TypeScript的构造函数中声明为公共的属性声明get / set?

时间:2019-05-08 18:25:15

标签: angular typescript

如果我有这样的课程:

export class Thing{
  constructor(private some: string) { ... }
  get thing() { return this.some; }
  set thing(value: string) { this.some = value; } 
}

我想知道这是否是具有可从构造函数分配的后备字段的受控属性(通过get和set)的正确方法。有没有更简单的方法可以做到这一点?

当然有一种方法可以做到这一点:

export class Thing{
  constructor(public some: string) { ... }
}

,但是在初始阶段我们只能控制设置。另一个可能是:

export class Thing{
  constructor(private some: string) { ... }
}

,但是我们无法公开访问它。而且只有使用set / get才能在创建对象时进行设置。

1 个答案:

答案 0 :(得分:1)

假设您打算将getter和setter用于某个目的,那么您已经在正确地执行此问题了:

export class Thing {
  constructor(private some: string) { ... }
  get thing() { return this.some; }
  set thing(value: string) { this.some = value; } 
}

如果您的getter和setter确实和本示例一样简单,那么与您的其他示例相比,没有什么好处:

export class Thing {
  constructor(public thing: string) { ... }
}