Introduction
Access modifiers control who can see or change parts of your code. They help keep your data safe and organized.
Access modifiers control who can see or change parts of your code. They help keep your data safe and organized.
class ClassName {
public propertyName: type;
private propertyName: type;
protected propertyName: type;
public methodName() {}
private methodName() {}
protected methodName() {}
}public is the default if you don't write any modifier.
Access modifiers apply only inside classes.
class Person { public name: string; private age: number; protected city: string; constructor(name: string, age: number, city: string) { this.name = name; this.age = age; this.city = city; } public greet() { console.log(`Hello, my name is ${this.name}`); } private getAge() { return this.age; } protected getCity() { return this.city; } }
public members.const p = new Person('Alice', 30, 'Paris'); console.log(p.name); // works because name is public // console.log(p.age); // error: age is private // console.log(p.city); // error: city is protected
protected members but not private.class Employee extends Person { showCity() { console.log(this.getCity()); // works because getCity is protected } }
This program shows how public, private, and protected work in classes and subclasses.
class Animal { public name: string; private sound: string; protected habitat: string; constructor(name: string, sound: string, habitat: string) { this.name = name; this.sound = sound; this.habitat = habitat; } public makeSound() { console.log(`${this.name} says ${this.sound}`); } private secretSound() { console.log('This is a secret sound'); } protected getHabitat() { return this.habitat; } } class Bird extends Animal { showHabitat() { console.log(`${this.name} lives in ${this.getHabitat()}`); } } const parrot = new Bird('Parrot', 'Squawk', 'tropical forests'); parrot.makeSound(); parrot.showHabitat(); // parrot.secretSound(); // Error: private method // console.log(parrot.sound); // Error: private property // console.log(parrot.habitat); // Error: protected property
Trying to access private or protected members outside allowed places causes errors.
protected is like a secret shared only with child classes.
Use these modifiers to keep your code safe and clear.
public means anyone can use it.
private means only the class itself can use it.
protected means the class and its children can use it.
public means anyone can access the member, private restricts access to the class only, and protected allows access to the class and its subclasses.public allows access from outside the class, including other classes and code.age in a TypeScript class?private age: number;.private age: number; correctly places private before the property name and type. age: private number; has incorrect order.class Animal {
protected sound = 'Roar';
}
class Lion extends Animal {
public makeSound() {
return this.sound;
}
}
const lion = new Lion();
console.log(lion.makeSound());sound is protected, so it can be accessed inside the class and its subclasses like Lion.makeSound method returns this.sound, which is "Roar". So, console.log prints "Roar".class Person {
private name: string = 'Alice';
}
const p = new Person();
console.log(p.name);name is declared private, so it cannot be accessed outside the class Person.p.name outside the class causes a compile-time error about private access.class Vehicle {
protected speed: number = 0;
private engineOn: boolean = false;
public start() {
this.engineOn = true;
}
}
class Car extends Vehicle {
public accelerate() {
this.speed += 10; // Line 1
this.engineOn = true; // Line 2
}
}
const car = new Car();
car.accelerate();speed is protected, so accessible in subclass Car. engineOn is private, accessible only inside Vehicle.speed and is valid. Line 2 tries to access engineOn directly, which causes a compilation error.Pass the test and this pattern moves unknown