-
(TypeScript) - 접근 제어자개발/TypeScript 2025. 8. 26. 11:27반응형
■ 접근 제어자 (access modifier)
: 타입스크립트 클래스에서만 제공하며, 특정 클래스를 만들 때 특정 필드나 메서드에 접근할 수 있는 범위를 설정해준다.
ex) public / private / protected
const employee = new Employee('송송', 27, 'developer'); employee.name = '히히'; employee.age = 17; employee.position = 'designer';인스턴스를 생성하고 값을 세팅할 수 있는 이유는 기본적으로 클래스의 접근제어자가 public 으로 설정돼
아무 제약 없이 누구나 접근이 가능하기 때문이다.

만약 접근 프로퍼티를 private 으로 바꾸면
해당 클래스 내에서만 엑세스 할 수 있게 바뀐다.
따라서 클래스 밖에서는 점표기법으로 접근도 읽을 수도 없게 된다.
//메서드 work() { console.log(`${this.name} working`); }만약 접근을 원한다면, 클래스 내부의 메서드를 통해서만 접근이 가능하다.
class ExecutiveOfficer extends Employee { // 필드 officeNumber: number; constructor(name: string, age: number, position: string, officeNumber: number) { super(name, age, position); this.officeNumber = officeNumber; } //메서드 func() { console.log(`${this.name} working`); //파생클래스에선는 접근 불가! } }private 은 해당클래스에서만 접근이 가능하므로 아무리 파생클래스여도 접근이 불가능하다.
protected age: number;//메서드 func() { console.log(`${this.age}`); }외부에서는 접근을 막지만 파생클래스에는 접근을 허용하고 싶을 때 사용하는 것이 바로 protected 이다.
protected 를 사용하면 private 와는 다르게 파생클래스에서는 사용이 가능하게 된다.
class Employee { //필드 (<-생성자 접근제어자 작성 시 해당 부분 제거 필요!) private name: string; protected age: number; position: string; constructor(private name: string, protected age: number, public position: string) { //값 초기화도 자동으로 해줌 this.name = name; this.age = age; this.position = position; }생성자에 접근제어자를 달아줄 수 있는데,
그렇게 되면 생성자가 알아서 필드를 생성하므로 기존에 정의했던 필드를 지워줘야 한다.
더불어 생성자에 접근제어자 작성 시, 초기화도 알아서 해준다.
따라서 하단에 this.name = name 을 별도로 적어주지 않아도 된다.
클래스로 만든 객체의 프로퍼티를 함부로 외부에서 수정할 수 없도록 해야한다. (=정보의 은닉화)
이를 접근제어자를 통해 할 수 있는 것이다.
반응형'개발 > TypeScript' 카테고리의 다른 글
(TypeScript) - 제네릭 (0) 2025.08.26 (TypeScript) - 인터페이스와 클래스 (0) 2025.08.26 (TypeScript) - 타입스크립트 클래스 (1) 2025.08.26 (TypeScript) - 자바스크립트 클래스 (0) 2025.08.25 (TypeScript) - 인터페이스 선언 합치기 (0) 2025.08.25