class Message{
private constructor(private messages:string[]){}
static create(messages:string[]){
return new Message(messages);
}
}
const msg:Message = new Message; // error!
const message:Message = Message.create(['Hola!']); // good
타입스크립트에서 final을 따라해보자.
final을 응용하여 싱글톤을 만들어 낼 수 있다.
아무튼 final이 뭔지 설명하자면 클래스나 메서드를 확장 혹은 오버라이드 할 수 없게 만드는 키워드이다. (다른 oop lang에서)
class의 constructor를 private으로 생성하면 해당 class를 생성, 확장할 수 없게 된다. 하지만 static method로 해당 클래스를 생성하여 돌려준다면 확장이 막힌 클래스를 생성할 수 있다.
final이 없으므로 이렇게 구현하면 되는 것이다