[typescript] private 접근 제어자와 데이터 캡슐화

개요

이번 포스트에서는 TypeScript에서 제공하는 private 접근 제어자에 대해 알아보고, 이를 활용하여 데이터를 캡슐화하는 방법에 대해 알아보겠습니다.

private 접근 제어자란?

private 접근 제어자는 클래스 내부에서만 접근할 수 있는 멤버 변수를 선언할 때 사용됩니다. 즉, 해당 클래스 외부에서는 이 변수에 직접 접근할 수 없습니다.

class Car {
    private speed: number;

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

    getSpeed(): number {
        return this.speed;
    }
}

let myCar = new Car(100);
// myCar.speed = 200; // 오류 발생: 'speed' 속성은 private이며 클래스 외부에서 접근할 수 없습니다.
console.log(myCar.getSpeed()); // 출력: 100

데이터 캡슐화

private 접근 제어자를 사용함으로써 데이터를 외부로부터 보호하면, 데이터의 무결성을 유지할 수 있고, 클래스 외부에서의 불필요한 접근을 방지할 수 있습니다. 이를 통해 객체 지향 프로그래밍의 핵심 개념인 캡슐화를 구현할 수 있습니다.

class BankAccount {
    private balance: number;

    constructor(initialBalance: number) {
        this.balance = initialBalance;
    }

    deposit(amount: number): void {
        this.balance += amount;
    }
  
    withdraw(amount: number): void {
        if (amount <= this.balance) {
            this.balance -= amount;
        } else {
            console.log('잔고가 부족합니다.');
        }
    }

    getBalance(): number {
        return this.balance;
    }
}

let myAccount = new BankAccount(1000);
myAccount.withdraw(500);
// myAccount.balance = 5000; // 오류 발생: 'balance' 속성은 private이며 클래스 외부에서 접근할 수 없습니다.
console.log(myAccount.getBalance()); // 출력: 500

결론

private 접근 제어자를 사용하여 데이터를 캡슐화하는 방법에 대해 알아보았습니다. 이를 통해 클래스 내부의 상태를 보호하고, 안정성을 유지할 수 있습니다. 객체 지향 프로그래밍에서는 데이터 캡슐화가 중요한데, TypeScript에서 제공하는 private 접근 제어자를 통해 이러한 목표를 달성할 수 있습니다.

이렇듯 private 접근 제어자는 TypeScript를 이용하여 안전하고 견고한 코드를 작성하는 데에 유용하게 활용될 수 있습니다.

참고 자료