[typescript] private 접근 제어자와 객체의 상태 변경

TypeScript에서는 클래스 멤버에 private 접근 제어자를 사용하여 해당 멤버를 클래스 외부에서 접근할 수 없도록 제한할 수 있습니다. private 멤버를 사용하면 클래스 외부에서 해당 멤버에 직접 접근하여 값을 변경하는 것을 막을 수 있습니다. 하지만 private 멤버에 접근하여 객체의 상태를 변경할 수 있는 방법이 있습니다.

private 접근 제어자

private 접근 제어자를 사용하여 클래스의 멤버를 private으로 선언할 수 있습니다. 이를 통해 해당 멤버는 클래스 외부에서 접근할 수 없습니다.

class Example {
    private status: string = "initialized";

    public getStatus() {
        return this.status;
    }
}

const ex = new Example();
console.log(ex.getStatus()); // 출력: initialized
console.log(ex.status); // 에러: 'status' 속성에는 액세스할 수 없습니다

위 예제에서 status 멤버는 private으로 선언되어 있기 때문에 클래스 외부에서 접근할 수 없습니다.

객체의 상태 변경

private 멤버에 접근하여 객체의 상태를 변경해야 하는 경우, 보통 public 메서드를 통해 상태를 변경할 수 있습니다.

class Example {
    private status: string = "initialized";

    public updateStatus(newStatus: string) {
        this.status = newStatus;
    }
}

const ex = new Example();
console.log(ex.getStatus()); // 출력: initialized
ex.updateStatus("updated");
console.log(ex.getStatus()); // 출력: updated

updateStatus 메서드를 통해 private 멤버인 status를 변경하고, 이를 통해 객체의 상태를 갱신할 수 있습니다.

private 멤버를 사용함으로써 클래스 내부의 상태를 보호하면서, public 메서드를 통해 지정된 방법으로만 객체의 상태를 변경할 수 있도록 제한할 수 있습니다.

결론

TypeScript에서 private 접근 제어자를 사용하여 클래스 멤버에 접근을 제한할 수 있습니다. private 멤버에 접근하여 객체의 상태를 변경하는 경우에도 public 메서드를 통해 상태를 관리할 수 있으며, 이를 통해 클래스의 내부 상태를 안전하게 보호할 수 있습니다.

이러한 private 멤버와 public 메서드의 조합은 객체의 상태 변경을 제어하고 안전하게 유지할 수 있는 중요한 도구가 될 수 있습니다.

참고 자료