什么是 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?