ما هو get و set (getters و setters) في TypeScript وكيفية استخدامها بشكل صحيح؟
مرحبًا بالجميع! لقد بدأت للتو في تعلم TypeScript بعد JavaScript، وأواجه بعض الالتباس مع getters و setters.
في JS، اعتدت جعل خصائص الكائنات عامة والوصول إليها مباشرة: `user.name = 'John'`. لكن في TypeScript، أرى أن الكثيرين يستخدمون `get` و `set` للوصول إلى الخصائص. لا أفهم تمامًا لماذا هذا ضروري وكيفية تنفيذه بشكل صحيح.
إليك مثال على الكود الخاص بي حيث أحاول إنشاء فئة User مع getter و setter:
```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". وأيضًا لا أفهم لماذا نحتاج إلى getters و setters أصلاً، إذا كان بإمكاني فقط جعل `public name: string` والوصول إليه.