[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 공식 문서를 확인해보세요.