타입스크립트는 기존 클래스를 기반으로 새 클래스를 만들 수 있다.
상속은 객체 지향 언어의 특징으로, extends
키워드는 한 클래스가 다른 클래스를 상속함을 선언할 때 사용한다.
위의 코드에서 Employee 클래스는 Person의 서브 클래스이다. 따라서 Person 클래스는 Employee의 슈퍼 클래스이다. Person 클래스는 부모이고 Employee는 Person의 자식 클래스이다.
클래스는 프로퍼티 이외에도 메서드를 가지는데 이 메서드로 클래스 내부에 선언된 함수를 호출한다. 메서드가 슈퍼 클래스에서 선언된 경우, 해당 메서드가 private이 아니면 서브 클래스에 상속된다.
타입스크립트는 접근 제어자 public, private, protected로 클래스 멤버의 접근 권한을 제어한다.
public
- 모든 내부 및 외부 클래스에서 접근할 수 있다. 타입스크립트는 기본적으로 모든 멤버의 접근 권한이 public이다.protected
- 동일 패키지에 속하는 클래스와 서브 클래스 관계일 경우에만 접근 가능하다.private
- 클래스 내에서만 접근 가능하다.전체 데이터를 한 곳에서 관리하는 원칙을 단일 데이터 소스 또는 단일 진실 공급원이라고 부른다. 객체 지향 언어에서는 단 하나의 인스턴스를 생성하는 디자인 패턴을 싱글톤이라고 한다. 프로그램 전반에서 사용하는 인스턴스를 하나만 구현하고 생성된 인스턴스 객체는 어디에서든지 참조할 수 있다.
슈퍼 클래스와 서브 클래스 모두 생성자가 있는 경우 서브 클래스의 생성자는 super()
메서드로 슈퍼 클래스의 생성자를 호출해야 한다.
추상 클래스는 객체로 만들 수 없는 추상적인 개념으로 일종의 설계도 역할을 한다.
추상 클래스는 abstract
키워드로 선언하며 추상 클래스로부터 객체를 생성하기 때문에 인스턴스화될 수 없다. 추상 클래스에서는 프로퍼티와 메서드도 abstract로 선언할 수 있다.
다형성
상속을 통해 기능을 확장하거나 변경하는 것을 다형성이라고 하며 이는 객체 지향 언어의 주요 특성중 하나이다.
메서드 오버로딩은 파라미터의 유형과 개수가 다르지만 이름이 같은 메서드를 여러 개 가질 수 있게 만드는 것을 의미한다.
오버로딩 메서드는 타입스크립트 컴파일러가 올바른 방법으로 메서드를 호출할 수 있게 도와주기 때문에 파라미터 타입과 함수 반환 값에 유니온을 사용하여 메서드를 구현할 수 있음에도 불구하고 오버로딩 메서드를 사용한다.
그러나 로직을 읽고 판단하기 힘들어질 수 있다는 단점이 있기 때문에 오버로딩 사용을 절제하는 것이 일반적이다.