TIR: Typescript | 클래스와 인터페이스 (6) 클래스 - final 클래스 구현

Lumpen·2023년 2월 6일
0

Typescript

목록 보기
13/17

final 클래스

타입스크립트는 클래스나 메서드에 final 키워드를 지원하지 않지만
클래스에서 final 효과를 구현할 수 있다
final 키워드는 클래스나 메서드를 확장, 오버라이드 할 수 없도록 막는 것

타입스크립트에서는 비공개 생성자(private constructor) 로 만들 수 있다

class MessageQueue {
	private constructor (private messages: string[]) {}
}

생성자를 private 로 선언하면 new 키워드로 인스턴스를 생성하거나
클래스를 확장할 수 없게 된다

클래스 상속만 막아야하는데 인스턴스 생성도 함께 막혔다
다음과 같이 하면 쉽게 해결할 수 있다

class MessageQueue {
	private constructor (private messages: string[]) {}
  	static create(messages: string[]) {
    	return new MessageQueue(messages)
    }
}

위와 같이 하면 컴파일 타임에 확장을 막을 수 있다

class Queue extends MessageQueue {} // error

MessageQueue.create([]) // MessageQueue
profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글