타스에는 자바처럼 접근 제한자를 사용가능하다.
1)
타스는 자바처럼 public, private, protected 접근 제한자를 쓸 수 있고
심지어 static도 가능하다.
하나씩 살펴보자.
먼저 public은 기본적으로 아무런 접근제한자를 붙이지않아도
설정돼있는 접근제한자이다.
public 이라는 이름답게, 외부에서 접근이 가능하기때문에
인스턴스를 만들고 public으로 지정된 프로퍼티를 직접 접근, 수정해줄 수 있으며
public 함수를 호출해 실행할 수 있다.
추가로 public 필드값은 코드 축약이 가능한데,
생성자 내부에 this.필드값명 = 파라미터를 적어주는 작업과
생성자 위에 필드값 이름을 적어주지않고
이렇게 생성자 파라미터에 public을 지정하는것으로
해당 작업 생략이 가능하다.
2)
반면 private은 class 코드 내부에서만 접근이 가능하게한다.
이렇게 클래스 밖에서 접근하면 에러가난다.
하지만
class 내부에서 private 필드값을 바꾸는 로직을 가진 함수를 만들고
외부에서 그 함수를 호출해 로직을 실행하여
바뀌면 안되는 중요한 필드값들의 노출과 변경을 방지할 수 있다.
한마디로 그냥 setter다.
역시 프로토타입 함수도 private을 달아주면 외부에서 접근할 수 없다.
3)
protected는 자바에서 같은 패키지 내의 클래스들만 사용할 수 있게하는 접근제한자였지만,
타입스크립트에서는 extends로 상속을 받은 클래스들까지만 사용할 수 있게 제한을 둔다.
역시 private과 마찬가지로 인스턴스에서는 접근할 수 없다.
4)
static은 자바와 유사하다.
인스턴스말고 딱 class 자체가 소유하는 정적 필드값이다.
기본적으로 extends를 통한 class끼리의 상속을 허용하지만
private static이 되면 본래 소유자 class에서만 접근할 수 있다.
위 예시처럼 private static인 필드값은
상속받은 클래스 내부에서 접근이 불가능하지만,
public static인 필드값은 상속을 받은 class에서 접근이 가능하다.
물론 public이던 static이던 static은 class 자체가 소유할 뿐,
인스턴스가 사용하는 값이 아님을 꼭 염두하자.