타입스크립트 정리 글은 이웅재님의 강의와 강의록을 참고하여 작성하였습니다. (짱짱)
오류가 있다면 언제든지 댓글 부탁드립니다.
요약
class에서 선언된 멤버변수와 멤버함수를 외부에서 접근이 가능하게 하는 방법, 재선언할 수 있도록 컨트롤하는 방법을 배웁니다. 생성자에도 private화하여 class 내부에서만 선언이 가능하도록 하며, 이는 singleTon 패턴을 정확하게 배치 가능할 수 있게 합니다. readonly 키워드를 붙여서 getter의 역할만 가능하도록 할 수 있습니다.
1. class getter, setter
get, set을 하는 중에 무언가를 해주기 위해서 사용한다. get과 set 사이에 추가적인 작업이 있을 때 사용한다.
- _ 를 변수명 앞에 붙이고, 내부에서만 사용한다.
- getter를 함수처럼 설정하면, 프로퍼티처럼 꺼내쓸수있다.
- 마찬가지로 setter 를 함수처럼 설정하면, 추가 작업을 하고 셋팅할 수 있다.
강사님은 getter setter가 혼란을 줄 수 있는 경우가 있어서 사용하지 않고, 대신 메서드를 같은 역할을 하는 메서드를 만드는데 메서드의 이름을 getName, setName으로 짓는다고 하셨따.
1 | class Person { |
getter
getter는 어떤 멤버 변수에 접근할 때마다 멤버 변수의 값을 조작하는 행위가 필요할 때 사용한다. 사용 방법은 아래와 같다.
setter
setter는 어떤 멤버 변수에 값을 할당할 때마다 멤버 변수의 값을 조작하는 행위가 필요할 때 사용한다. 사용 방법은 아래와 같다.
2. class 멤버변수
객체지향의 class와 거의 유사하다. static property와 static method가 있다.
- static 키워드를 붙힌 프로퍼티는 클래스.프로퍼티로 사용한다.
- static 프로퍼티에 private, protected 를 붙히면 똑같이 동작한다.
- public static은 외부에서 변경이 가능하다.
- default는 public이다.
1 | class Person { |
3. class 멤버함수
1 | class Person { |
public static은 의미가 있다.
private static 메소드와 프로퍼티는 무슨 의미가 있나?
대부분 한 ts파일에 한 class를 사용하고, 모듈을 다른곳에서 쓰기위해서 export import를 쓴다.
private static
?
- 사용시 class의 private static과 ts파일 안의 제일 상단에 있는 const 변수와 어떤 차이가 있나? 라고 할때 애매하다.
- private이라 애매한 것.
4. class private static property or method
1 | class Person { |
5. Abstract Class 😶
- abstract 키워드가 사용된 클래스는 new 로 생성할 수 없다.
- abstract 키워드가 사용된 클래스를 상속하면 abstract 키워드가 붙은 함수를 구현해야 한다.
1 | abstract class APerson { |
6. private constructor
- 생성자 함수 앞에 접근제어자인 private 을 붙일 수 있다.
- 외부에서 생성이 불가능하다.
내부에서 생성하는 방법을 써야하고, 그러다보니 싱글톤 패턴을 정확하게 배치해서 사용할 수 있게 되었다.
1 | class Preference { |
7. singleTon 🙄
자바스크립트의 함수는 new로 생성자를 사용할 때마다 새로이 생성된 객체를 리턴합니다. 하지만 특수한 상황에서는 하나의 함수에서 생성되는 객체가 오직 한개만을 가져야 할 때가 있다. 그럴 경우 사용되는 디자인 패턴이 Singleton Pattern
- 싱글턴 패턴 : 객체리터럴이 싱글턴 패턴의 대표적.
- 모듈패턴을 변형한 디자인 패턴
- 처음 namespace를 만들 때 사용한다.
- 게임을 실행할 때 게임은 한번만 켜져야 하기 때문에 싱글턴이 적절.
- 모듈패턴을 변형한 디자인 패턴
- private 생성자를 이용해서 내부에서만 인스턴스 생성이 가능하도록 함.
- pubilc static 메서드를 통해 private static 인스턴스 레퍼런스를 획득한다.
- Lazy Loading (Initialization) : 최초 실행시가 아니라, 사용시에 할당을 함
1 | class Preference { |
8. readonly
private인데 get, set중 get만 있는 상황과 같다.
private readonly
로 선언된 경우, 생성자에서는 할당이 가능하다.private readonly
로 선언된 경우, 생성자 이외에서는 할당이 불가능하다.public readonly
로 선언된 경우, 클래스 외부에서는 다른값을 할당할 수 없다.- 마치 getter 만 있는 경우와 같다.
1 | class Person { |