[typescript] 클래스 외부에서 멤버 변수에 접근 제어자 사용하기
TypeScript를 사용하다 보면 클래스의 멤버 변수에 대한 접근을 제어해야 할 때가 있습니다. 이때, 접근 제어자(Access Modifiers)를 사용하여 멤버 변수의 접근을 제어할 수 있습니다. TypeScript에서는 주로 세 가지 접근 제어자인 public
, private
, protected
를 사용합니다.
1. public
접근 제어자
public
접근 제어자는 아무런 제한 없이 해당 멤버 변수에 어디서든 접근할 수 있도록 허용합니다. 기본적으로 TypeScript 클래스 멤버 변수는 public
이라는 의미이므로 별도로 명시하지 않아도 됩니다.
아래 예제는 public
접근 제어자를 사용한 멤버 변수의 예시입니다.
class Person {
public name: string;
constructor(name: string) {
this.name = name;
}
}
let person = new Person('John');
console.log(person.name); // 'John'으로 출력됨
2. private
접근 제어자
private
접근 제어자는 해당 멤버 변수에 클래스 외부에서 접근하는 것을 막습니다. 오직 클래스 내부에서만 해당 멤버 변수에 접근할 수 있습니다.
아래 예제는 private
접근 제어자를 사용한 멤버 변수의 예시입니다.
class Person {
private name: string;
constructor(name: string) {
this.name = name;
}
getName() {
return this.name; // 클래스 내부에서는 접근 가능
}
}
let person = new Person('John');
console.log(person.name); // 에러: 'name'은 외부에서 접근 불가
console.log(person.getName()); // 'John'으로 출력됨
3. protected
접근 제어자
protected
접근 제어자는 해당 멤버 변수에 클래스 외부에서는 접근할 수 없지만, 파생 클래스(sub-class)에서는 접근할 수 있도록 허용합니다.
아래 예제는 protected
접근 제어자를 사용한 멤버 변수의 예시입니다.
class Person {
protected name: string;
constructor(name: string) {
this.name = name;
}
}
class Employee extends Person {
getName() {
return this.name; // 파생 클래스에서는 접근 가능
}
}
let employee = new Employee('John');
console.log(employee.name); // 에러: 'name'은 외부에서 접근 불가
console.log(employee.getName()); // 'John'으로 출력됨
접근 제어자를 사용하여 멤버 변수에 대한 접근을 제어함으로써 코드의 안정성과 유지 보수성을 향상시킬 수 있습니다. 상황에 맞게 적절한 접근 제어자를 선택하여 사용하는 것이 중요합니다.
참고문헌: