TS는 JS 클래스에 타입 및 가시성 수정자를 추가한다.
여기에서 JS 클래스에 대해 자세히 알아보자.
클래스의 멤버(속성 및 메서드)는 변수와 유사한 타입 (Annotations)주석을 사용하여 타입이 지정됩니다.
클래스 멤버는 가시성에 영향을 주는 특수 수정자도 제공된다.
TS에는 세 가지 주요 가시성 수정자가 있다.
- public - (기본값) 어디에서나 클래스 멤버에 대한 액세스를 허용한다.
- private - 클래스 내에서만 클래스 멤버에 대한 액세스를 허용한다.
- protected - 아래 상속 섹션에서 설명하는 자신과 이를 상속하는 모든 클래스에서 클래스 멤버에 대한 액세스를 허용한다.
클래스의
this
키워드는 일반적으로 클래스의 인스턴스를 나타낸다. 여기에서 자세히 읽어보자.
TS는 매개변수에 가시성 수정자를 추가하여 Constructor에서 클래스 멤버를 정의하는 편리한 방법을 제공한다.
배열과 유사하게, readonly
키워드는 클래스 멤버가 변경되는 것을 방지할 수 있다.
인터페이스(여기에서 다룸)는 클래스가 implements
키워드를 통해 따라야 하는 타입을 정의하는 데 사용할 수 있다.
클래스는 다음과 같이 쉼표로 구분된
implements
후 각 인터페이스를 나열하여 여러 인터페이스를 구현할 수 있다.class Rectangle implements Shape, Colored {
클래스는 extends
키워드를 통해 서로 확장할 수 있다. 하나의 클래스는 다른 클래스 하나만 확장할 수 있다.
클래스가 다른 클래스를 확장하면 상위 클래스의 멤버를 같은 이름으로 바꿀 수 있다.
최신 버전의 TS에서는 이것을 override
키워드로 명시적으로 표시할 수 있다.
기본적으로
override
키워드는 메서드를 재정의할 때 선택 사항이며 존재하지 않는 메서드를 실수로 재정의하는 것을 방지하는 데만 도움이 된다. 재정의할 때 강제로 사용하려면noImplicitOverride
설정을 사용한다.
모든 멤버를 구현하지 않고도 다른 클래스의 기본 클래스로 사용할 수 있도록 클래스를 작성할 수 있다. 이것은 abstract
키워드를 사용하여 수행된다. 구현되지 않은 상태로 남아 있는 멤버도 abstract
키워드를 사용한다.
Abstract(추상) 클래스는 모든 구성원이 구현되어 있지 않기 때문에 직접 인스턴스화할 수 없다.