Access Modifiers in TypeScript (original) (raw)

Last Updated : 11 Sep, 2025

In TypeScript, access modifiers control the visibility and accessibility of class members, such as properties and methods, aligning with the principles of encapsulation and information hiding in object-oriented programming.

Now let's understand this with the help of example:

JavaScript ``

class Animal { public name: string; private age: number; protected species: string;

constructor(name: string, age: number, species: string) {
    this.name = name;
    this.age = age;
    this.species = species;
}

public getInfo(): string {
    return `${this.name} is a ${this.species}.`;
}

// Adding the getAge method to access the private age property
public getAge(): number {
    return this.age;
}

}

class Dog extends Animal { constructor(name: string, age: number) { super(name, age, 'Dog'); }

public getDetails(): string {
    // Accessing age through the getAge method
    return `${this.name} is a <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi>t</mi><mi>h</mi><mi>i</mi><mi>s</mi><mi mathvariant="normal">.</mi><mi>s</mi><mi>p</mi><mi>e</mi><mi>c</mi><mi>i</mi><mi>e</mi><mi>s</mi></mrow><mi>a</mi><mi>n</mi><mi>d</mi><mi>i</mi><mi>s</mi></mrow><annotation encoding="application/x-tex">{this.species} and is </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal">t</span><span class="mord mathnormal">hi</span><span class="mord mathnormal">s</span><span class="mord">.</span><span class="mord mathnormal">s</span><span class="mord mathnormal">p</span><span class="mord mathnormal">ec</span><span class="mord mathnormal">i</span><span class="mord mathnormal">es</span></span><span class="mord mathnormal">an</span><span class="mord mathnormal">d</span><span class="mord mathnormal">i</span><span class="mord mathnormal">s</span></span></span></span>{this.getAge()} years old.`;
}

}

const myDog = new Dog('Buddy', 3); console.log(myDog.name); // Accessible console.log(myDog.getInfo()); // Accessible console.log(myDog.getDetails()); // Accessible

``

**Output:

Buddy Buddy is a Dog. Buddy is a Dog and is 3 years old.

**In this example:

Types of Access Modifiers

1) Public Access Modifier

The public modifier allows class members to be accessible from anywhere. By default, all class members are public if no access modifier is specified.

Now let's understand this with the help of example:

JavaScript ``

class Animal { public name: string;

constructor(name: string) {
    this.name = name;
}

public makeSound(): void {
    console.log(`${this.name} makes a sound.`);
}

}

const dog = new Animal('Dog'); console.log(dog.name); // Accessible dog.makeSound(); // Accessible

``

**Output:

Dog Dog makes a sound.

**In this example:

2. Private Access Modifier

The private modifier restricts access to class members, making them accessible only within the class they are defined. This ensures encapsulation and protects the internal state of the object.

Now let's understand this with the help of example:

JavaScript `

class Person { private ssn: string;

constructor(ssn: string) {
    this.ssn = ssn;
}

public getSSN(): string {
    return this.ssn;
}

}

const person = new Person('123-45-6789'); console.log(person.getSSN()); // console.log(person.ssn);

`

**Output:

123-45-6789

**In this example:

3) Protected Access Modifier

The protected keyword is used to declare a class member so that it can be accessed by the class containing it and any of its subclasses, it comes handy when you want members of a class accessed in descendant classes but not outside.

Now let's understand this with the help of example:

JavaScript `

class User { protected age: number;

constructor(age: number) {
    this.age = age;
}

}

class Employee extends User { public getRetirementAge(): number { return this.age + 65; } }

const employee = new Employee(30); console.log(employee.getRetirementAge()); //console.log(employee.age);

`

**Output:

95

**In this example:

4. Read-only Access Modifier in Typescript

After initialization, the read-only access modifier marks a property as immutable, enabling it to be read but not directly updated. This improves data security and makes state management easier.

**Example 1: Read-only property in a class

JavaScript `

class User { readonly id: number; constructor(id: number) { this.id = id; } }

const user = new User(101); console.log(user.id); // 101 // user.id = 102; // Error: Cannot assign to 'id' because it is a read-only property

`

**Output

101

**In this example:

**Example 2: Read-only property with public modifier

JavaScript `

class Product { constructor(public readonly name: string) {} }

const product = new Product('Laptop'); console.log(product.name); // Laptop // product.name = 'Tablet'; // Error: Cannot assign to 'name' because it is read-only

`

**Output

Laptop

**In this example: