[JS] private, private readonly

곽태민·2023년 8월 7일
0

TIL

목록 보기
39/65

Typescript에서 class를 사용할 때, constructor를 사용해서 의존성 주입을 수행한다.

의존성 주입class가 다른 class나 객체를 사용할 때, 해당 의존성을 class 외부에서 주입하여 결합도를 낮추고 유연한 코드를 작성하는 방법이다.

이때, 의존성으로 주입되는 멤버 변수에는 private이나 private readonly를 사용할 수 있다.

1. Private

private 키워드를 사용하면 해당 멤버 변수는 class 내부에서만 접근을 할 수 있다. 외부에서는 접근할 수 없고, 상속받은 하위 클래스도 접근할 수 없다.

즉, 해당 멤버 변수는 외부로부터 완전히 은닉된다.

class ExampleClass {
	private privateVariable: string;
  
  	constructor(privateVariable: string) {
    	this.privateVariable = privateVariable;
    }
  
    public getPrivateVariable(): string {
    	return this.privateVariable;
    }
}

const exampleInstance = new ExampleClass('Hello');
console.log(exampleInstance.getPrivateVariable()); // Hello;
console.log(exampleInstance.privateVariable); // 에러: Property 'privateVariable' is private and only accessible within class 'ExampleClass'.

2. private readonly

private readonly를 사용하면 해당 멤버 변수는 class 내부에서만 접근할 수 있고, 선언 시점 이후에는 값을 변경할 수 없다.

**즉, 읽기 전용이며, class 외부에는 접근할 수 없다.

class ExampleClass {
  private readonly privateReadonlyVariable: string;

  constructor(privateReadonlyVariable: string) {
    this.privateReadonlyVariable = privateReadonlyVariable;
  }

  public getPrivateReadonlyVariable(): string {
    return this.privateReadonlyVariable;
  }
}

const exampleInstance = new ExampleClass('Hello');
console.log(exampleInstance.getPrivateReadonlyVariable()); // "Hello"
exampleInstance.privateReadonlyVariable = 'World'; // 에러: Cannot assign to 'privateReadonlyVariable' because it is a read-only property.
profile
Node.js 백엔드 개발자입니다!

0개의 댓글