private 접근 제어자를 사용해 constructor() 앞에 붙이면 new 키워드를 통해 인스턴스를 생성하지 못하도록 제한할 수 있습니다. 대신 공개된 스태틱 메서드 getInstance()를 통해 오직 한 번만 인스턴스를 생성할 수 있습니다. 이를 싱글턴 패턴이라 부릅니다.
classOnlyOne {privatestatic instance:OnlyOne;public name:string;// new 클래스 구문 사용 제한을 목적으로// constructor() 함수 앞에 private 접근 제어자 추가privateconstructor(name:string) {this.name = name; }// 오직 getInstance() 스태틱 메서드를 통해서만// 단 하나의 객체를 생성할 수 있습니다.publicstaticgetInstance() {if (!OnlyOne.instance) {OnlyOne.instance =newOnlyOne('싱글턴 객체'); }returnOnlyOne.instance; }}/* 인스턴스 생성 ------------------------------------------------ */// [오류]// [ts] 'OnlyOne' 클래스의 생성자는 private이며 클래스 선언 내에서만 액세스할 수 있습니다.// constructor OnlyOne(name: string): OnlyOnelet bad_case =newOnlyOne('오류 발생');let good_case =OnlyOne.getInstance();
컴파일된 JavaScript(ES5) 코드를 살펴보면 싱글턴 패턴과 상관 없이 여러 차례 인스턴스를 생성할 수 있습니다. 하지만 JavaScript는 객체({}) 자체가 싱글턴이 될 수 있습니다.