[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'으로 출력됨

접근 제어자를 사용하여 멤버 변수에 대한 접근을 제어함으로써 코드의 안정성과 유지 보수성을 향상시킬 수 있습니다. 상황에 맞게 적절한 접근 제어자를 선택하여 사용하는 것이 중요합니다.

참고문헌: