인프런 커뮤니티 질문&답변
타입스크립트 Class Override 관련 질문
작성
·
389
·
수정됨
0
상속받은 Class에서 부모 메소드 Override 조건이
// 1) 부모 메서드와 반환 타입이 일치해야한다.
// 2) 부모 메서드에 필수인 파라미터들이 존재해야한다.
// 3) 부모 메서드에서 optional인 파라미터들이 자식에서
// 필수로 지정되면 안된다.
라고 강의에서 이야기 하셨는데,
3)의 경우 잘못된게 아닌가 싶어서 문의드립니다.
class Parent {
shout(name: string, age?: number) {
return `${name}야 안녕!`;
}
}
class Child extends Parent {
shout(name: string, age: number): string {
return super.shout(name);
}
}위 링크와 같이 부모 클래스에 존재하는 optional 파라미터가 자식 클래스에서 필수로 지정되어도 오류가 발생하지 않는 것 같습니다.
제가 확인하고 정리한 요건은 다음과 같습니다.
부모 메소드와 자식 메소드의 반환 타입이 일치해야 함
부모 메소드에서 필수인 파라미터들은 자식 메소드에도 동일한 타입으로 필수 파라미터로 존재해야 함
부모 메소드에 존재하지 않는 필수인 파라미터가 자식 메소드에 존재하지 않아야 함
부모 메소드에 존재하는 optional 파라미터는 자식 메소드에 존재하지 않아도 됨(단, 존재할 경우 타입은 일치해야함)
자식 메소드에 optional 파라미터는 추가적으로 존재해도 됨
혹시 제가 잘못 생각한 부분인지 확인 부탁드립니다.
감사합니다.
퀴즈
TypeScript 클래스에서 생성자(Constructor)의 주된 역할은 무엇일까요?
클래스의 메서드를 정의한다.
클래스 인스턴스의 초기 속성 값을 설정한다.
클래스 상속 관계를 정의한다.
클래스 멤버의 접근 권한을 제어한다.
답변 3
0
안녕하세요, 코드팩토리님!
이 부분은 어떻게 정리가 됐나요?
Intuitioner님의 의견으로 강의 내용이 수정되어야 하는게 맞나요?
컨펌(?)을 분명히 어딘가에 주셨을 것 같은데 제가 찾지 못하고 있는 것 같아서 여기에 문의드립니다!
0
오버라이드 할 때 부모 메서드의 옵셔널 파라미터를 부모 메서드와 다른 타입으로 지정해보았더니 에러메시지에 undefined와 유니언 되어있는 걸로 나오네요.
아마 부모 메서드의 옵셔널 파라미터가 자식에서 필수 파라미터로 되는 이유가 아마 undefined와의 유니언 타입에서 내로잉 된 타입이기에 가능한 것이 아닐까 해요.
저도 이부분 강의 듣고 정리하면서 정말 안되나 테스트해봤더니 되가지고 의문이 들어 확인해봤네요..
강의 영상에 수정이 필요할 듯 합니다 😅
0
안녕하세요!
제가 테스트 해봤는데 현재 말씀하신 부분이 맞는걸로 확인됩니다.
다만 제가 분명 공식 다큐멘테이션에서 확인하고 테스트 한 후에 작성했던 커리큘럼이라 조금 이상하네요.
현재 레퍼런스를 못찾고 있는데 확인 후 다시한번 컨펌 드리도록 하겠습니다.
감사합니다!






안녕하세요!
Intuitioner님과 basestar011님의 말씀이 맞는걸로 확인됩니다!
혼선을드려 죄송합니다!