If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
पिछले topics में आपने Inheritance
के बारे में पढ़ा , और समझा कि कैसे हम किसी class की properties और methods को child class में inherit
करके use कर सकते हैं।
लेकिन कभी कभी हमें ऐसी भी need आ जाती है जब हम चाहते हैं कि Parent
class की कोई property या method child class में inherit न हो।
Well, इसके लिए concept होता है class visibility
या access modifiers
का , और इस topic में हम वही discuss करेंगे।
●●●
TypeScript में, access modifiers
का use करके हम class members (properties और methods) कि visibility control कर सकते हैं।
Class Visibility
का मतलब Property / Method का scope define करना होता है। की वह Property / Method कहाँ - कहाँ Accessible होगा। class visibility को define करने वाले keywords को ही Access Specifiers
भी कहते हैं।
Access modifiers TypeScript में keywords
हैं जो control करते हैं कि कौन (object, class, या inheriting class) किस member को access कर सकता है।
TypeScript में 3 primary access modifiers होते हैं।
public : By default सब members public होते हैं।
private: सिर्फ अपनी class के अंदर access होते हैं।
protected : Parent और child classes के अंदर access होते हैं।
●●●
By default, TypeScript में अगर आप कोई access modifier define नहीं करते, तो वो public
होता है।
इसका मतलब है कि कोई भी code (class के अंदर या बाहर) उस property या method को access कर सकता है , इसमें कोई restriction नहीं होती।
class Person {
public name: string;
constructor(name: string) {
this.name = name;
}
public greet() {
console.log(`Hello, my name is ${this.name}.`);
}
}
const person = new Person('John');
console.log(person.name); // Accessing public property
person.greet(); // Accessing public method
इस example में, name और greet method दोनो public
हैं , इसलिए हम class के बाहर भी directly इन्हे access कर सकते हैं।
जब हम कोई member private declare करते हैं, तो उससे सिर्फ उसी class के अंदर access किया जा सकता है। Class के बाहर से private
members को directly access नहीं कर सकते।
class Person {
private age: number;
constructor(age: number) {
this.age = age;
}
public getAge() {
return this.age; // Accessing private property within the class
}
}
const person = new Person(25);
console.log(person.getAge()); // Accessing private property via public method
इस example में, age
private property है, जो सिर्फ getAge()
method के through access कि जा सकती है।
अगर हम age को directly access करने कि कोशिश करेंगे, तो TypeScript error
देगा।
console.log(person.age); // Error: Property 'age' is private
Data encapsulation को ensure करता है।
Code को ज़्यादा secure और organized बनाता है।
protected
modifier private कि तरह ही होता है, लेकिन इसमें एक extra feature होता है : protected members को child classes
में access किया जा सकता है।
यह inheritance के concept के साथ काफी useful होता है।
class Person {
protected name: string;
constructor(name: string) {
this.name = name;
}
protected greet() {
console.log(`Hello, my name is ${this.name}.`);
}
}
class Employee extends Person {
private jobTitle: string;
constructor(name: string, jobTitle: string) {
super(name);
this.jobTitle = jobTitle;
}
public introduce() {
this.greet(); // Accessing protected method from parent class
console.log(`I work as a ${this.jobTitle}.`);
}
}
const employee = new Employee('John', 'Software Engineer');
employee.introduce();
इस example में, greet और name protected
हैं , इसलिए Employee
class जो Person से inherit करती है, वो इन्हे access कर सकती है।
लेकिन class के बाहर से direct access allowed नहीं है , और अगर करते हो तो error आएगी।
employee.greet(); // Error: 'greet' is protected and not accessible outside
●●●
Q1 : क्या अगर हम access modifier mention नहीं करते, तो क्या होता है?
- अगर आप कोई access modifier mention नहीं करते, तो by default वो member public होता है.
Q2 : क्या TypeScript में multiple modifiers एक साथ use कर सकते हैं?
-नहीं , एक time पर सिर्फ एक ही access modifier use कर सकते हैं। आप एक property या method को public, private, या protected में से कोई एक declare कर सकते हैं।
Q3 : private और protected में क्या difference है?
- private members सिर्फ उसी class के अंदर access किये जा सकते हैं, जबकि protected members parent और child classes दोनो में accessible होते हैं।
TypeScript के access modifiers (public, private, और protected) हमें data और methods कि accessibility
को control करने का option देते हैं।
यह modifiers हमें ज़्यादा secure, maintainable और organized code लिखने में help करते हैं। अगर आपको inheritance या encapsulation का use करना है, तो private और protected modifiers
का समझना काफी जरूरी है।