Avatar ·

什么是 TypeScript 中的 get 和 set(getters 和 setters),以及如何正确使用它们?

大家好!我刚刚从 JavaScript 开始学习 TypeScript,对 getters 和 setters 感到困惑。 在 JS 中,我习惯将对象的属性设为 public 并直接访问:`user.name = 'John'`。但在 TypeScript 中,我看到很多人使用 `get` 和 `set` 来访问属性。我不太明白为什么需要这样做,以及如何正确实现它。 下面是我尝试创建一个带有 getter 和 setter 的 User 类的代码示例: ```typescript class User { private name: string; constructor(name: string) { this.name = name; } get name(): string { return this.name; } set name(value: string) { this.name = value; } } const user = new User('Alice'); console.log(user.name); ``` 但 TypeScript 对这种定义报错。我收到错误:"Property 'name' is already declared in the upper scope"。而且我还不明白,如果可以直接用 `public name: string` 并访问,为什么还需要 getters 和 setters?