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 |