메서드 오버라이드
메서드 오버라이드는 아래의 규칙만 따르면 된다.
- 부모 메서드와 반환 타입이 일치해야 한다.
- 부모 메서드에 필수인 파라미터들이 존재해야 한다.
- 부모 메서드에 없는 파라미터가 자식 메서드에서 필수로 지정되면 안된다.
class Car {
drive(name: string) {
return "부릉부릉";
}
}
// 1번 규칙 위배
class Sonata1 extends Car {
drive(name: string) {
return true;
}
}
// 2번 규칙 위배
class Sonata2 extends Car {
drive(name: number) {
return "부릉부릉";
}
}
// 3번 규칙 위배
class Sonata3 extends Car {
drive(name: string, turbo: boolean) {
return "부릉부릉";
}
}
// 정상 케이스
class SonataGood extends Car {
drive(name: string, turbo?: boolean) {
if (turbo) {
return `${name}, 부릉부릉 터보.`;
}
return `${name}, 부릉부릉.`;
}
}
속성 오버라이드
- 속성의 오버라이드는 타입을 narrowing 하는 경우에 가능하다.
class Car2 {
name: string | number;
constructor(name: string | number) {
this.name = name;
}
}
class Sonata4 extends Car2 {
name: string; // string | number -> string 으로 내로잉
constructor(name: string) {
super(name);
this.name = name;
}
}
반응형
'Typescript' 카테고리의 다른 글
TS032. 타입스크립트의 Visibility 키워드들 (0) | 2024.01.01 |
---|---|
TS031. 타입스크립트의 Abstract Class (0) | 2024.01.01 |
TS029. 타입스크립트 클래스 상속 (0) | 2023.12.31 |
TS028. 타입스크립트 인터페이스를 클래스에 사용하기 (0) | 2023.12.31 |
TS027. 타입스크립트에서의 클래스 선언 방식 (0) | 2023.12.31 |