개발야옹

[ Typescript ] public, private, protected, static keyword 본문

Language/Typescript

[ Typescript ] public, private, protected, static keyword

kitez 2021. 12. 19. 17:58

public 

public은 default값이다. 생략이 가능하다.

class User{
	public name : string = "kim";
    // public => 모든 자식들이 name을 이용가능하다.
    // public keyword는 생략 가능 default 값이다.
    // public <-> private
	constructor(a : string){
    	this.name = a; 
    }
    
    public 함수(){
    	console.log(this.name);
    };
}

let user1 = new User("park");
user1.name = "Lee";

 

public은 축약을 제공하기도 한다. 

class User{
	constructor( public name : string, public age : number){
    }
}

let user1 = new User("Yeonji", 22);
console.log(user1); // { name : "Yeonji", age : 22 }

 

private

class 내부에서만 사용이 가능하며, class 외부에서는 직접적으로 접근이 불가능하다. 또한, extends로 해당 class를 상속받은 자식 class도 사용이 불가능하다.

class User{
	private name : string = "kim";
    // private => class 내부에서만 사용가능하게 된다. 자식들이 직접 사용 불가능.
	constructor(a : string){
    	this.name = a; 
    }
    
    public ChangeName(a : string) : void{
    	this.name = a;
    };
}

let user1 = new User("park");
user1.name = "Lee"; // error 발생
user1.ChangeName("Lee"); // success

 

protected

protected는 private keyword와 같이 class{} 내부에서만 사용이 가능하다. 그러나 private과 반대로 extends로 상속받은 class 내부에서도 사용이 가능하다.

class Parent{
	protected x = 10;
    private y = 30;
}

class Baby extends Parent{
	doIt(){
    	this.x = 30; // success
        this.y = 20; // error
    }
}

 

static

static ketyword를 붙은 것은 자식에게 물려주지않음. 부모 class만 사용이 가능하다.

static은 private, public, protected와 동시에 사용이 가능하다.

class Person{
	static x = 10;
    y = 100;
}

let person1 = new Person();
console.log(person1); // x 는 보이지 않음

 

728x90

'Language > Typescript' 카테고리의 다른 글

[ Typescript ] Generic  (0) 2022.01.24
[ Typescript ] .ts 와 .tsx  (0) 2021.12.19
[ Typescript ] rest parameter type지정  (2) 2021.12.18
[ Typescript ] interface  (0) 2021.12.18
[ Typescript ] class type 지정  (0) 2021.12.18