[typescript] 클래스 외부에서 private 접근 제어자 사용하기

TypeScript에서 private 접근 제어자를 사용하여 클래스 멤버에 대한 외부 접근을 제한할 수 있습니다. 그러나 때때로 외부에서 private 멤버에 접근해야 하는 경우가 있습니다. 이 글에서는 TypeScript에서 private 멤버에 접근하기 위한 몇 가지 방법에 대해 알아보겠습니다.

1. Getter 메서드 사용

class Circle {
    private _radius: number;

    constructor(radius: number) {
        this._radius = radius;
    }

    get radius(): number {
        return this._radius;
    }
}

let myCircle = new Circle(5);
console.log(myCircle.radius); // 외부에서 private 멤버에 접근

위 예제에서 radius 프로퍼티는 private 속성 _radius의 값을 반환하는 getter 메서드로 사용됩니다. 이를 통해 private 멤버에 간접적으로 접근할 수 있습니다.

2. public 멤버를 통한 간접 접근

class Circle {
    private _radius: number;

    constructor(radius: number) {
        this._radius = radius;
    }

    printRadius() {
        console.log(this._radius);
    }
}

let myCircle = new Circle(5);
myCircle.printRadius(); // 외부에서 private 멤버를 간접적으로 접근

위 예제에서 printRadius 메서드를 통해 private 멤버 _radius에 간접적으로 접근할 수 있습니다.

3. with 추가 getter/setter

class Circle {
    private _radius: number;

    constructor(radius: number) {
        this._radius = radius;
    }

    get radius(): number {
        return this._radius;
    }

    set radius(value: number) {
        this._radius = value;
    }
}

let myCircle = new Circle(5);
myCircle.radius = 10; // 외부에서 private 멤버에 접근하여 값을 변경
console.log(myCircle.radius); // 외부에서 private 멤버에 접근하여 값 가져오기

radius 프로퍼티에 추가된 setter를 통해 private 멤버를 외부에서 수정할 수 있습니다.

TypeScript에서 private 멤버에 접근하는 방법에 대해 알아보았습니다. 이러한 방법은 코드의 유지보수성과 안정성을 고려할 때 신중하게 사용해야 합니다.

더 많은 정보를 원하신다면 TypeScript 공식 문서를 확인해보세요.