TypeScript Access Modifiers
Access modifier pada class di TypeScript digunakan untuk mengatur level akses atau visibilitas properti atau method dalam class. Access modifier dapat ditempatkan sebelum properti atau method dalam class dan terdapat tiga jenis access modifier yaitu:
Public (default)
Properti atau method dapat diakses dari dalam class, subclass, dan instance objek.
class Animal {
name:string;
foot:number;
constructor(name: string,foot:number){
this.name = name;
this.foot = foot;
}
printAnimal(){
console.log(`Animal name ${this.name} number of animal legs ${this.foot}`)
}
}
Private
Properti atau method hanya dapat diakses dari dalam class, tidak dapat diakses dari subclass atau instance objek.
class Car{
private color:string;
private type:string;
constructor(color: string,type: string){
this.color =color;
this.type = type;
}
getColor():string{
return this.color;
}
getType():string{
return this.type;
}
}
let bus = new Car("Red","Bus")
console.log(`Color ${bus.getColor()} and Type ${bus.getType()}`)
Protected
Properti atau method dapat diakses dari dalam class dan subclass, tetapi tidak dapat diakses dari instance objek.
class Person {
protected firstName: string
protected lastName: string
private age :number;
constructor(firstName: string, lastName: string,age :number) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
getPerson(): string {
return `${this.firstName} ${this.lastName} ${this.age}`;
}
}
let person1 = new Person("Jhon","Due",30);
console.log(`Perosn is ${person1.getPerson()}`);
Readonly
TypeScript menyediakan methode atau keyword readonly dimana ini bisa digunakan untuk membuat suatu properti/class menjadi immutable (tidak bisa diubah) atau dibuat instance pada class, untuk membuat properti/class menjadi immutable kita bisa mengunakan keyword readonly seperti contoh berikut :
class Person {
readonly birthDate: Date;
constructor(birthDate: Date) {
this.birthDate = birthDate;
}
}
Source code tutorial Typescript tersedia di github typescript-days