extends

사용하는 이유 

기존 클래스의 속성과 메서드를 물려받아 새로운 클래스를 정의하기 위해서 (interface에도 사용가능)

 

이점

- 중복되는 코드가 없어진다.

- 코드의 재사용성이 높아진다.

- 확장성있는 코드를 만들 수 있다.

- 유지 및 보수가 쉬워진다.

- 클래스들간의 관계를 계층적으로 형성하여 시스템의 이해를 도울 수 있다.

 

단점

- 부모에서 발생한 변경이 모든 자식들에게 영향을 끼친다.

- 상속을 너무 많이 사용하면 구조의 복잡도가 올라가 오히려 시스템의 이해가 어려질 수도 있다.

 

사용하는 경우

- 기능확장이 필요할때

- 공통적으로 가지는 기능이 있어야 할때

 

사용하는 방식 

class Person {
  constructor(private firstName: string, private lastName: string) {
    this.firstName = firstName;
    this.lastName = lastName;
  }
  
  getFullName(): string {
    return `사람이름 출력`;
  }
  
  describe(): string {
     return `This is ${this.firstName} ${this.lastName}.`;
  }
}

 

class Employee extends Person {
  constructor(firstName, lastName, private jobTitle: string) {
    super(firstName, lastName);
    this.jobTitle= jobTitle;
  }
  
  getFullName(): string {
    return `${this.firstName} ${this.lastName}`;
  }
  
  describe(): string {
    return super.describe() + `I'm a ${this.jobTitle}.`;
  }
  
  
}

부모 클래스 (Person) 에 있는 Constructor를 호출하기 위해서, 자식 클래스 (Employee)에서 super() 을 사용해야 한다.

 

const newEmployee = new Employee('Joey','Lim','Back-end Developer');

console.log(newEmployee.getFullName());
// Joey Lim
console.log(newEmployee.describe());
// This is Joey Lim. I am a Back-end Developer

 

 

참고 사이트

https://www.typescripttutorial.net/typescript-tutorial/typescript-inheritance/

 

'프로그래밍 > TypeScript' 카테고리의 다른 글

[ TS ] 오버로딩  (0) 2024.05.09
[ TS ] Promise<void> 의미  (0) 2024.05.07
[ TS ] interface : 필터링하기  (0) 2024.04.01
[TS] 유틸리티 타입 (Utility Types): Keyof, Partial  (0) 2024.03.08
[TS] 제네릭 ( Generics )  (0) 2024.03.08

+ Recent posts