TypeScript readonly

TypeScript menyediakan access readonly modifier, memungkinkan kita untuk membuat sebuah class immutable. Pemberian nilai (assignment) ke properti readonly hanya boleh dilakukan di salah satu dari dua tempat.

  • Pada saat deklarasi properti
  • Di dalam constructor dar kelas yang sama

Contoh :

#Pada saat deklarasi properti

readonly id: number = 1;
#Di dalam constructor kelas

class User {
  readonly id: number;

  constructor(id: number) {
    this.id = id; // valid
  }
}

Tidak diperbolehkan mengubah nilai readonly di luar dua tempat tersebut:

user.id = 5; // Error

Intinya

  • readonly → hanya bisa di-set sekali
  • Setelah itu nilainya tidak bisa diubah
  • Tujuannya untuk menjaga immutability dan mencegah bug

Contoh penggunaan readonly

Ketika kita membuat DTO

export class CreateUserDto {
  readonly name: string;
  readonly email: string;
  readonly password: string;
}

Ketika kita membuat entity

Untuk column yang tidak bisa diudate

@Entity()
export class User {
  @PrimaryGeneratedColumn('uuid')
  readonly id: string;

  @CreateDateColumn()
  readonly createdAt: Date;
}

Ketika kita membuat entity Constructor Injection (NestJS)

@Injectable()
export class UserService {
  constructor(
    private readonly userRepo: UserRepository,
  ) {}
}

Ketika kita Domain / Business Object

class AppraisalResult {
  constructor(
    public readonly marketPrice: number,
    public readonly confidence: number,
  ) {}
}

Source code tutorial Typescript tersedia di github typescript-days

hyvercode

Leave a Reply

Your email address will not be published. Required fields are marked *