Avatar ·

ما هو 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` والوصول إليه.