Typescript에서 class
를 사용할 때, constructor
를 사용해서 의존성 주입을 수행한다.
의존성 주입은 class
가 다른 class
나 객체를 사용할 때, 해당 의존성을 class
외부에서 주입하여 결합도를 낮추고 유연한 코드를 작성하는 방법이다.
이때, 의존성으로 주입되는 멤버 변수에는 private
이나 private readonly
를 사용할 수 있다.
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'.
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.