객체 지향 언어에서 제공하는 public, private, static, protected 와 같은 키워드들을
타입스크립트에서 사용가능하다.
public
타입스크립트는 class 안에서 public 키워드를 사용가능하다
class User {
public name: string;
constructor(){
this.name = 'kim';
}
}
let user1 = new User();
user1.name = 'park';
위 코드에서는 public 으로 선언된 name 이라는 속성이 있다.
이렇게 name 처럼 public 이 붙은 속성은 user1과 같은 자식 object 들이 마음대로 사용/수정이 가능하다.
만약 public 을 안 붙인 채로 만든다고 해도, 기본적으로 자동으로 아무것도 안붙인 경우에는 public 이라고 가정한다.
(때문에 public을 안써도 되긴하다)
private
private 을 붙이면 public과는 다르게, 자식 object 에서는 수정을 할 수 없다.
private 이 붙은 것들은 class { } 안에서만 수정/사용이 가능하다
private 속성을 class 밖에서 수정하고 싶은 경우
이런 경우에는 private 속성을 수정하는 함수를 만들어, 함수를 실행시키면 된다.
class User {
public name :string;
private familyName :string;
constructor(){
this.name = 'kim';
let hello = this.familyName + '안뇽';
}
changeSecret(){
this.familyName = 'park';
}
}
let user1 = new User();
user1.changeSecret()
위 예제코드를 보자.
현재 familyName 은 private 으로 선언되어 class { } 밖에서는 수정이 불가능한 상황이다.
따라서 changeSecret 이라는 함수를 만들었다.
이 함수를 실행하면 그 객체의 familyName 을 'park' 으로 바꾸도록 했다.
실제로 user1 이라는 자식 object 를 만들어 changeSecret 과 같이 함수를 실행시켜주면 에러없이 'park' 으로 수정이 된다.
Tip
class Person {
name;
constructor ( name :string ){
this.name = name;
}
}
let 사람1 = new Person('john')
class Person {
constructor ( public name :string ){
}
}
let 사람1 = new Person('john')
위 두 예제 코드는 같은 역할을 한다.
코드를 살펴보면 1번 예제에서는 contructor 안에서 this.name = name 과 같이
받아온 데이터 값을 this.name 으로 설정해주는 과정이 있다.
반면에 2번 예제에서는 Person 이라는 class 의 자식 object를 만들때, 첫번째로 들어오는 변수값은 name 이라는 속성의 값으로 설정할거야- 와 같이 작성할 수 있다.
같은 역할을 하지만 constructor 안에서 this.name = name 과 같은 코드를 생략할 수 있어서 좋을 것 같다.
ref: 코딩 애플