دسترسی به اصلاح کننده ها در TypeScript: The Gatekeepers

اصلاح کننده های دسترسی در TypeScript ابزارهای ضروری برای مدیریت دسترسی اعضای کلاس (ویژگی ها و روش ها) در کد ما هستند. با کنترل افرادی که میتوانند به این اعضا دسترسی داشته باشند و آنها را اصلاح کنند، اصلاحکنندههای دسترسی به ما کمک میکنند تا کپسولهسازی، یک اصل اصلی برنامهنویسی شیگرا را پیادهسازی کنیم. ما می توانیم از اعضای کلاس در کلاس خود، از هر نقطه خارج از کلاس، یا در هر فرزند یا کلاس مشتق شده استفاده کنیم.
اصلاح کننده های دسترسی در TypeScript به عنوان دروازه بان عمل می کنند و دید و دسترسی اعضای کلاس را کنترل می کنند. آنها از استفاده نامعتبر جلوگیری می کنند و یکپارچگی داده ها را حفظ می کنند. اگر به طور صریح تنظیم نشده باشد، TypeScript به طور خودکار اصلاح کننده عمومی را اختصاص می دهد و همه اعضا را از هر کجا در دسترس قرار می دهد.
TypeScript سه اصلاح کننده دسترسی اولیه را ارائه می دهد: public
، private
، و protected
. بیایید هر یک را با جزئیات بررسی کنیم.
1. عمومی
را public
اصلاح کننده سطح دسترسی پیش فرض در TypeScript است. وقتی یکی از اعضای کلاس به عنوان علامت گذاری می شود public
، به این معنی است که عضو از هر جایی قابل دسترسی است: داخل کلاس، خارج از کلاس یا حتی در زیر کلاس ها. اگر اصلاح کننده دسترسی را مشخص نکنیم، عضو به طور ضمنی است public
.
مثال:
class Animal {
public name: string;
constructor(name: string) {
this.name = name;
}
public move(distance: number): void {
console.log(`${this.name} moved ${distance} meters.`);
}
}
const dog = new Animal('Dog');
dog.move(10); // Accessible
console.log(dog.name); // Accessible
در مثال بالا، هر دو name
اموال و move
روش هستند public
، اجازه دسترسی نامحدود را می دهد.
2. خصوصی
را private
اصلاح کننده دسترسی به عضو را فقط در کلاسی که تعریف شده محدود می کند. این بدان معنی است که اعضای خصوصی را نمی توان از خارج از کلاس، از جمله در کلاس های مشتق شده، دسترسی یا تغییر داد.
مثال:
class Animal {
private name: string;
constructor(name: string) {
this.name = name;
}
public move(distance: number): void {
console.log(`${this.name} moved ${distance} meters.`);
}
}
const cat = new Animal('Cat');
cat.move(5); // Accessible
// console.log(cat.name); // Error: Property 'name' is private and only accessible within class 'Animal'.
اینجا name
دارایی خصوصی است، بنابراین تلاش برای دسترسی cat.name
از خارج کلاس منجر به خطا می شود.
3. محافظت شده است
را protected
اصلاح کننده اجازه می دهد تا به عضوی در کلاس تعریف شده و در هر زیر کلاسی که از آن مشتق شده است دسترسی داشته باشد. با این حال، همچنان دسترسی خارج از این کلاس ها را محدود می کند.
مثال:
class Animal {
protected name: string;
constructor(name: string) {
this.name = name;
}
protected move(distance: number): void {
console.log(`${this.name} moved ${distance} meters.`);
}
}
class Bird extends Animal {
public fly(distance: number): void {
console.log(`${this.name} is flying.`);
this.move(distance); // Accessible
}
}
const eagle = new Bird('Eagle');
eagle.fly(20); // Accessible
// eagle.move(20); // Error: Property 'move' is protected and only accessible within class 'Animal' and its subclasses.
در این مثال، name
اموال و move
روش هستند protected
، اجازه می دهد Bird
کلاس برای دسترسی به آنها با این حال، تلاش برای تماس move
در یک نمونه از Bird
از خارج از سلسله مراتب کلاس منجر به خطا می شود.
ترکیب اصلاح کننده های دسترسی با سازنده ها
TypeScript به ما اجازه می دهد تا با استفاده از اصلاح کننده های دسترسی، خصوصیات را مستقیماً در سازنده اعلام و مقداردهی اولیه کنیم.
مثال:
class Person {
constructor(public name: string, private age: number) {}
public getAge(): number {
return this.age;
}
}
const john = new Person('John', 30);
console.log(john.name); // Accessible
console.log(john.getAge()); // Accessible
// console.log(john.age); // Error: Property 'age' is private and only accessible within class 'Person'.
در این مورد، name
عمومی است، بنابراین می توان آزادانه به آن دسترسی داشت، در حالی که age
خصوصی است و دسترسی به داخل کلاس را محدود می کند.
چرا از اصلاح کننده های دسترسی استفاده کنیم؟
- کپسوله سازی: با استفاده از اصلاحکنندههای دسترسی، میتوانیم جزئیات پیادهسازی داخلی یک کلاس را از دنیای بیرون مخفی کنیم و تنها موارد ضروری را آشکار کنیم.
- قابلیت نگهداری: درک و نگهداری کدهایی که به درستی کپسوله شده اند آسان تر است، زیرا به وضوح مرزهای قابل دسترسی و غیرقابل دسترسی را مشخص می کند.
- انعطاف پذیری: کپسوله سازی به ما این امکان را می دهد که پیاده سازی داخلی را بدون تأثیر بر کد خارجی تغییر دهیم، تا زمانی که رابط عمومی ثابت بماند.
- پیشگیری از خطا: محدود کردن دسترسی به بخشهای مهم کد ما به جلوگیری از تغییرات ناخواسته کمک میکند و خطر بروز باگ را کاهش میدهد.
دسترسی به اصلاح کننده ها در یک نگاه
جدول زیر دسترسی اعضای کلاس را بر اساس اصلاح کننده های دسترسی آنها خلاصه می کند:
نتیجه
اصلاحکنندههای دسترسی در TypeScript یک ویژگی قدرتمند هستند که به ما کمک میکنند کد امنتر و قابل نگهداریتری را با کنترل نمایان بودن اعضای کلاس بنویسیم. با درک و استفاده public
، private
، و protected
به طور موثر، میتوانیم کلاسهایی با کپسولهبندی خوبی ایجاد کنیم که کار با آنها آسانتر و کمتر مستعد خطا باشد. چه ما تازه با TypeScript شروع کردهایم یا به دنبال اصلاح مهارتهای خود باشیم، تسلط بر اصلاحکنندههای دسترسی گامی کلیدی برای تبدیل شدن به توسعهدهندگان ماهر است.
من را دنبال کنید: LinkedIn Portfolio