TypeScript Access Modifiers : Public, Private and Protected Modifiers Explained


पिछले 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 करेंगे।

Class Visibility In TypeScript

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 भी कहते हैं।

What are Access Modifiers ?

Access modifiers TypeScript में keywords हैं जो control करते हैं कि कौन (object, class, या inheriting class) किस member को access कर सकता है।

TypeScript में 3 primary access modifiers होते हैं।

  1. public : By default सब members public होते हैं।

  2. private: सिर्फ अपनी class के अंदर access होते हैं।

  3. protected : Parent और child classes के अंदर access होते हैं।

TypeScript public Modifier

By default, TypeScript में अगर आप कोई access modifier define नहीं करते, तो वो public होता है।

इसका मतलब है कि कोई भी code (class के अंदर या बाहर) उस property या method को access कर सकता है , इसमें कोई restriction नहीं होती।

public modifier example

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 कर सकते हैं।

TypeScript private Modifier

जब हम कोई member private declare करते हैं, तो उससे सिर्फ उसी class के अंदर access किया जा सकता है। Class के बाहर से private members को directly access नहीं कर सकते।

private modifier example

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
Benefits of private private modifier
  • Data encapsulation को ensure करता है।

  • Code को ज़्यादा secure और organized बनाता है।

TypeScript protected Modifier

protected modifier private कि तरह ही होता है, लेकिन इसमें एक extra feature होता है : protected members को child classes में access किया जा सकता है।

यह inheritance के concept के साथ काफी useful होता है।

private modifier example

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

Access Modifiers FAQs

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 होते हैं।

Conclusion

TypeScript के access modifiers (public, private, और protected) हमें data और methods कि accessibility को control करने का option देते हैं।

यह modifiers हमें ज़्यादा secure, maintainable और organized code लिखने में help करते हैं। अगर आपको inheritance या encapsulation का use करना है, तो private और protected modifiers का समझना काफी जरूरी है।

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook