타입스크립트의 클래스 접근 제한자

Jean·2023년 7월 28일
0
post-thumbnail

public

class User {
 public name: string;

 constructor(){
   this.name = 'kim';
 }
}

let user = new User();
user.name = 'park';  //가능

public이 붙은 속성은 자식 object들이 마음대로 사용하고 수정가능합니다.
기본적으로 붙어있는 속성이기에 생략해도 public이 자동으로 붙습니다

private

class User {
 public name :string;
 private familyName :string;  

 constructor(){
   this.name = 'kim';
   let hello = this.familyName + 'hello'; //가능
 }
}

let user = new User();
user.name = 'park';  //가능
user.familyName = 123; //에러

private 붙은 속성들은 오직 해당 클래스 안에서만 수정이 가능합니다.
이렇게 속성을 외부에서 숨기고 싶을 때 private 키워드를 이용합니다.

private 키워드는 class 내의 함수에도 붙일 수 있습니다.

protected

class User {
protected name = 'kim';
}

class NewUser extends User {
 changeName(){
   this.name = 'park';
 }
}

클래스 내부와 해당 클래스를 상속받은 자식 클래스에서만 접근이 가능합니다

class 여러개 만들 때 class 끼리 공유할 수 있는 속성을 만들고 싶으면 protected,
class 하나 안에서만 쓸 수 있는 속성을 만들고 싶으면 private 을 씁니다

static

클래스를 역행하는 기능 (?)

class User {
  static x = 10;
  y = 20;
}

let user1 = new User();
user1.x //오류
User.x //10

인스턴트가(클래스에서 생성된 객체) 가져다 쓸수없게 만들어 준다

함수도 static 붙일 수 있다
extends 로 class를 복사할 경우 static 붙은 것들도 같이 상속됩니다

profile
햇내기 개발자 지망생

0개의 댓글