TypeScript Access Modifier

Access modifier berguna untuk mengatur aksesbilitas member dari sebuah class. Ada 3 access modifier yang didukung,yaitu : private, protected dan public.

  • private: modifier paling restrictive, akses hanya untuk method yang didefinisikan didalam class yang sama.
  • protected: mirip private, namun dapat diakses oleh class turunannya.
  • public: paling bebas, dapat diakses dari mana saja.

Perlu diingat, modifier private dan protected tidak disupport oleh ES2015. Jadi JavaScript hasil compile tidak akan menggunakan modifier diatas, dan setiap variable tetap diakses.

Namun tujuan dari TypeScript mendukung access modifier diatas adalah mencegah error saat development. Dengan mengatur suatu member class menjadi private atau tidak, dapat membantu proses development dengan intent yang lebih jelas.

Berikut contoh penggunaan public, private dan protected.

//public
class Employee {
    public empCode: number;
    public empName: string;

    constructor(empcode: number, empname:string){
        this.empCode = empcode;
        this.empName = empname;
    }
}

let emp = new Employee(123, "Budi");
emp.empCode = 123; // OK
emp.empName = "Budi";//OK

// private
class Employee {
    private empCode: number;
    public empName: string;

    constructor(empcode: number, empname:string){
        this.empCode = empcode;
        this.empName = empname;
    }
}

let emp = new Employee(123, "Budi");
emp.empCode = 123; // Compiler Error
emp.empName = "Budi";//OK

//protected
class Employee {
    public empName: string;
    protected empCode: number;

    constructor(name: string, code: number){
        this.empName = name;
        this.empCode = code;
    }
}

class SalesEmployee extends Employee{
    private department: string;
    
    constructor(name: string, code: number, department: string) {
        super(name, code);
        this.department = department;
        
    }

    tryAccess_empCode(){
        super.empCode = 123; // OK
    }
    
}

let emp = new SalesEmployee("John Smith", 123, "Sales");
emp.empCode; //Compiler Error

Sharing is caring:

Leave a Comment